Commit Graph

1243 Commits

Author SHA1 Message Date
Malay Vasa e1ec52bbca docs: dark mode, navbar polish, scroll reset, platform→dashboard rename (#3465)
## Summary

- **Dark/light theme switcher** in the navbar. Drops `forcedTheme:
'light'` so the toggle actually flips themes; sidebar footer toggle
stays disabled so there's only one switcher.
- **Dark mode color pass.** `--composio-brand` lifts to a muted
`#5B8BF0` (the deep `#0007cd` brand reads as unlit text on `#0f0f0f`).
Card / muted greys nudge to `#1c1c1c` / `#1f1f1f`. Borders drop from 10%
white to 6% so card edges sit back. `--border` / `--sidebar-border`
follow suit.
- **Square navbar.** Search input and the new theme toggle render with
`border-radius: 0` to match the rest of the navbar.
- **Welcome-page scroll reset.** New `ScrollReset` client component
wired into the root layout. Next.js App Router skips its built-in scroll
reset when the new route resolves to the same dynamic `page.tsx` segment
— every link from the welcome page to a `/docs/*` page hits this case,
so users were landing mid-page on the new route. Now `usePathname()`
change ⇒ `window.scrollTo(0, 0)` (skips first render and any
hash-bearing navigation).
- **`platform.composio.dev` → `dashboard.composio.dev`** across docs
content + the direct-execution LLM guardrail (28 files).
`docs/public/openapi*.json` left alone — auto-generated, and the
surviving reference is literally to the legacy dashboard.

## Test plan

- [ ] Toggle theme from the navbar; verify both light and dark render
- [ ] In dark mode, confirm "Docs" nav active state, chip icons,
"CONNECTED" labels, and Ask AI button read clearly against `#0f0f0f`
- [ ] Scroll to the bottom of `/docs`, click any link in HomeResources /
HomeSurfaces / HomeFeatures — the new page should land at scroll 0
- [ ] Click a TOC `#anchor` link inside a docs page — should still
scroll to the anchor (not get clobbered to 0)
- [ ] Spot-check a few rewritten URLs in cookbooks / quickstart — all
`platform.composio.dev` should now be `dashboard.composio.dev`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-20 00:06:06 -07:00
Malay Vasa d84557ca21 docs: rework welcome page with v2 hero and homepage sections (#3464)
## Summary

Reworks the docs welcome page (`/docs`) into a two-column hero with an
animated agent chat mock + tool overlay, plus four restructured homepage
sections.

### Hero (`DocsHeroV2`)
- Left: headline (`Start building with Composio.`), short sub,
brand-blue chip column (Quickstart, API reference, Toolkits).
- Right (lg+ only): mock chat panel with the v1 hero's per-agent skin
(`Claude Cowork` / `ChatGPT Codex` / `Your AI Agent`), step-by-step
timeline-driven animation (user prompt → thinking dots → tool-trail
items → assistant response), and a floating "active tool" card layered
over the chat's left edge.
- L-shape SVG connector between chat and overlay: muted grey resting
state + brand-blue glow + bright line that re-draw via `pathLength` on
every tool change.
- Mock chat hidden below lg.

### Homepage sections
- **`HomeFeatures`** — `Everything you need to ship production agents.`
2×2 grid with bespoke visuals per pillar: 8×2 toolkit grid with `+1K`
cell, sessions panel (`USER_ID` + connected apps), triggers feed (`LIVE`
indicator + recent events), and a workbench mock with animated 4×2 CPU
lights. `auto-rows-fr` on `sm:` so cards equalize on tablet/desktop but
breathe on mobile.
- **`HomeSurfaces`** — `Three ways to use Composio.` bento: Developer
card spans full width (`md:col-span-3`) and shows 8 provider logos
(Anthropic, OpenAI, Vercel AI, Google, LangChain, CrewAI, LlamaIndex,
Mastra). Row 2: For You (with Claude / Codex / Cursor / Windsurf /
OpenClaw client logos), CLI (with `curl ... | bash` install snippet and
functional copy button), Agents.
- **`HomeResources`** — `Reach for the rest.` six-card footer row with
Quickstart, API reference, Cookbooks, Changelog, Toolkits,
Troubleshooting.

### Other
- Ports the landing-page hero into `components/landing-hero/` (kept
under the original `DocsHero` for easy revert; commented out, V2 wired
in).
- Theme-aware `--hero-*` CSS vars for chat-skin colors so the chat reads
in both light and dark.
- Removes the old `Works with your stack` provider grid (the providers
now live inside the Developer surface card).

## Test plan
- [ ] Verify hero animation cycles through 3 examples on desktop
- [ ] Verify L-shape connector pulses in brand blue on every tool change
- [ ] Verify chat mock is hidden on mobile and left column reads on its
own
- [ ] Verify dark mode (chat skins, connector, card surfaces, code
blocks)
- [ ] Verify CLI install copy button copies and toggles the icon to ✓
- [ ] Verify all chip / card hrefs resolve

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 22:06:35 -07:00
Rahul Tarak 3411c39adc docs: update CLI and reference navigation (#3462)
## Summary
- Rework the CLI docs around Composio for You / Claude Code usage, with
sections for knowledge work, `run`/sub-agents, trigger listening,
developer workflows, and unsupported direct CLI embedding.
- Move CLI into the top of Other topics and remove single-toolkit MCP
from the Docs sidebar.
- Move Changelog into Reference after Errors, with a grouped single-page
changelog, scroll-based date anchors, and redirects from old
`/docs/changelog` URLs.
- Add the Claude logo to the “Open in Claude” page action.

## Tests
- `cd docs && bun run lint:links`
- `cd docs && bun test tests/static/navigation.test.ts`
- `cd docs && bun run build`
2026-05-19 17:01:58 -07:00
Rahul Tarak e842e68e4b docs: merge and group guide content (#3456)
## Summary
- Stack this PR on top of #3455 (`docs/love-fixes`).
- Rework the former Core Concepts / Getting Started / Guides / Features
area into a smaller set of sections:
  - Build with sessions
  - Authenticate users
  - Triggers and webhooks
  - Direct Tool Execution Guides (Legacy)
  - Other topics
- Move conceptual session pages (`how-composio-works`, users/sessions,
tools/toolkits, authentication, workbench, triggers) into the
appropriate grouped sections.
- Merge duplicated custom-auth content into `Managed vs custom auth`
(`/docs/custom-app-vs-managed-app`) and redirect the old
`/docs/using-custom-auth-configuration` URL.
- Trim repeated OAuth-app setup from white-labeling docs so that page
focuses on branding, callback-domain routing, and post-auth redirect UX.
- Clean up “What to read next” cards so non-legacy pages no longer point
at direct-execution docs and first point to the next item in their
section where possible.
- Fix the session lifecycle contradiction in `how-composio-works` so it
matches the current persisted/reusable session model.

## Checks
- `cd docs && bun run lint:links`
- `cd docs && bun test tests/static/navigation.test.ts`
2026-05-19 05:17:31 -07:00
Rahul Tarak 9acfa852b2 docs: tidy welcome page, fix playground link, hide ugly Ask AI tab (#3455)
## Summary

Three small docs polishes:

- **Hide the disgusting "Ask AI" side tab.** The Decimal widget renders
its own `.decimal-widget-sidebar-tab` launcher (vertical pill with
sideways text) on every page. We already trigger the widget from our own
"Ask AI" button in the nav, so the third-party launcher is redundant
*and* ugly. Hidden via CSS in `app/global.css`.
- **Fix the Playground nav link.** It pointed at
`platform.composio.dev/auth?next_page=/tool-router` — which (a) hits a
dead host now that platform has moved to `dashboard.composio.dev`, and
(b) lost the playground's connect check on the redirect. Repointed to
`https://dashboard.composio.dev/~/project/playground`, which is the
dashboard's smart-resolver route: it handles login (`?next=`), looks up
`last_visited` / default org+project, and lands the user on
`/{org}/{project}/playground` with the connect step intact. Same fix
applied to the toolkits landing CTA and the welcome-page Playground
card.
- **Trim the welcome page.** Dropped the duplicated intro Cards row, the
"Get Started" / "Explore" / "Features" / "Community" headers, and the
secondary Features grid. Now it's: intro → AIToolsBanner → Quickstart →
Toolkits + Playground → Providers. Much cleaner.

## Test plan

- [ ] `bun run scripts/validate-links.ts` passes (already verified
locally — 0 errors)
- [ ] On preview deploy, the side "Ask AI" tab is gone
- [ ] Clicking "Playground" in the nav (logged out) lands on login →
playground; (logged in) lands on `/{org}/{project}/playground`
- [ ] Welcome page renders without missing-icon errors

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 04:09:48 -07:00
Rahul Tarak 18c3b98de6 docs: reapply Algolia docs search (#3454)
## Summary
- Re-apply the Algolia docs search migration after the previous PR was
merged and reverted.
- Keep the existing Fumadocs search UI while using Algolia API when
search keys are configured, with `/api/search` fallback for local
development and tests.
- Add a first-party Algolia index builder/sync script that creates
section-sized docs records from MDX/OpenAPI/toolkit/changelog content,
configures index relevance settings, and replaces index objects without
relying on Algolia Crawler.
- Add Algolia Insights view/click events and a terminal search relevance
test script.
- Clean search breadcrumbs so results show labels like `Toolkit` and
`Cookbook` instead of duplicated `toolkits > Gmail` formatting.

## Tests
- `cd docs && bun run types:check`
- `cd docs && bun run sync:search --dry-run`
- `cd docs && bunx eslint components/custom-search-dialog.tsx
lib/search-index.ts scripts/sync-algolia-search.ts
scripts/test-algolia-search.ts`

## Notes
- Live Algolia sync requires `ALGOLIA_ADMIN_API_KEY`.
- Live search relevance tests require `ALGOLIA_SEARCH_API_KEY` or
`NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY`.
2026-05-19 02:27:40 -07:00
Rahul Tarak 5f400fc5f7 Revert "docs: migrate search to Algolia" (#3453)
Reverts ComposioHQ/composio#3452
2026-05-19 01:34:36 -07:00
Rahul Tarak 7bd3e0669c docs: migrate search to Algolia (#3452)
## Summary
- Switch docs search dialog to Algolia when public Algolia env vars are
configured, with local `/api/search` fallback for development/tests
- Add a shared docs search index builder plus `bun run sync:search` to
publish records to Algolia
- Add a GitHub Actions workflow to dry-run and sync the Algolia index on
`next` docs changes when secrets are configured
- Document required Algolia env vars and sync command

## Tests
- `cd docs && bun run types:check`
- `cd docs && bun run sync:search --dry-run`
- `cd docs && bun test tests/static/`
- `cd docs && bunx eslint components/custom-search-dialog.tsx
lib/search-index.ts scripts/sync-algolia-search.ts`
- `cd docs && bun run build`

## Notes
- `bun run lint` still fails on existing unrelated repo-wide lint errors
in files outside this change (for example `app/global-error.tsx`,
`components/ask-ai-button.tsx`, `components/version-selector.tsx`). The
changed search files pass targeted ESLint.
- Production search requires `NEXT_PUBLIC_ALGOLIA_APP_ID`,
`NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY`, and optionally
`NEXT_PUBLIC_ALGOLIA_INDEX_NAME` (default `composio_docs`). Index
syncing requires `ALGOLIA_APP_ID`/`ALGOLIA_ADMIN_API_KEY` secrets.
2026-05-19 01:33:26 -07:00
palash-c dc052f5c0e docs: add Shared Connections page under Authentication (#3406)
## Summary

New documentation page at `/docs/auth-configuration/shared-connections`
covering the `accountType` and per-user ACL surface added to
`@composio/core@0.9.1` and `composio==0.14.0`.

## What's covered

- **SHARED vs PRIVATE** — comparison table; what each means for who can
use the connection and how it's resolved
- **Creating a SHARED connection** — `link()` with `accountType:
'SHARED'` and an initial ACL
- **ACL resolution rule** — 4-step deny-wins ordering + a *"common
patterns"* table (only-creator, allow-all, targeted-allow,
everyone-except-N, combined)
- **Updating the ACL** — `updateAcl()` with PATCH semantics, plus an
explicit footgun warning about `notAllowedUserIds: []` clearing the deny
list
- **Using a shared connection** — pinning into a tool-router session via
`connectedAccounts`, or direct execute via `connectedAccountId`
- **Inspecting the ACL** — `get()` returns `accountType` +
`aclConfigForShared`; the latter is `undefined` when the caller isn't
authorised to see it
- **Error handling** — table mapping `ComposioAclOnlyForSharedError`,
`ComposioSharedAccessDeniedError`, and
`ComposioSharedConnectionNotAccessibleError` to their trigger
conditions, with try/except examples

## Other changes

- **`docs/package.json`**: bump `@composio/core` from `^0.9.0` to
`^0.9.1`. The published `0.9.1` is what carries the new typed surface;
without this bump, twoslash type-checks against `0.9.0` and the new
fields show as unknown properties.
- **`docs/content/docs/auth-configuration/meta.json`**: insert
`shared-connections` into the Authentication sidebar between
`connected-accounts` and `migrating-initiate-to-link`.

## Sanitization

Followed the same scrub conventions the SDK PRs landed on:

- No Hermes / Apollo PR references
- No internal backend error code names
- No JSONB / storage-layer details
- No *"project member"* wording (users don't belong to a project
entity); used `userId` and the pinning mechanism instead
- *"API key caller"* instead of *"project/org API key"*

## Test plan

- [x] `bun run build` — 1411 pages generated, no twoslash errors against
the published `@composio/core@0.9.1`
- [x] Manual link audit — `/docs/configuring-sessions`,
`/docs/managing-multiple-connected-accounts`,
`/docs/auth-configuration/connected-accounts`, and the internal
`#using-a-shared-connection` anchor all resolve
- [ ] Preview deploy spot-check — confirm the Cards icons (`Database`,
`Plug`, `Wrench`) render and the sidebar shows the new entry under
Authentication

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-14 16:42:37 +05:30
venkat82 2a904db6c9 docs(shared-connections): move under Getting Started → Authenticating users
The page was sitting under Direct Tool Execution Guides → Authentication.
Shared Connections is a connection-creation feature, not a direct-tool
workflow, so it slots better under Getting Started → Authenticating
users alongside `in-chat-authentication` and `manually-authenticating`.

Changes:
- `git mv docs/content/docs/auth-configuration/shared-connections.mdx
  docs/content/docs/authenticating-users/shared-connections.mdx`
- Removed `shared-connections` entry from
  `auth-configuration/meta.json`.
- Appended `shared-connections` to `authenticating-users/meta.json`.
- Doc body unchanged. The internal link to
  `/docs/auth-configuration/connected-accounts` in "What to read next"
  still resolves (the connected-accounts page stays under
  auth-configuration).

New URL: `/docs/authenticating-users/shared-connections`.

Verified: `bun run build` clean, `bun run scripts/validate-links.ts`
clean (0 errors).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 21:17:14 +05:30
venkat82 3e581d5959 docs(shared-connections): clarify camelCase/snake_case in prose
Two prose tweaks so TypeScript readers don't have to mentally translate
from Python-style field names:

- "Creating a SHARED connection" intro now mentions both
  (`accountType` in TypeScript, `account_type` in Python).
- "Common ACL patterns" caption notes the table uses camelCase and tells
  Python callers what to translate to.

Pure prose change — no code samples touched. Build clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 20:52:07 +05:30
venkat82 1292bc2149 docs(shared-connections): align with final SDK surface + add list filter section
Three updates after the post-review changes on the SDK PRs:

1. **TS `updateAcl` shape** — the review feedback on PR #3424 moved the
   call from a top-level `experimental_updateAcl(composio, id, opts)`
   export to a method on the `composio.experimental` namespace, mirroring
   Python (`composio.experimental.update_acl(id, ...)`). All TS code
   samples now call `composio.experimental.updateAcl(id, opts)`. The
   stale `experimental_updateAcl` import is dropped from the
   error-handling sample too.

2. **Top callout** — no longer mentions the discarded top-level export;
   reads as "the SDK methods live under the `composio.experimental`
   namespace" with both language names.

3. **Listing SHARED connections** — new section before "Inspecting the
   ACL". Shows the `account_type` (Py) / `accountType` (TS) filter that
   was missing from the doc. The wire keeps this flat as a query param
   (unlike the nested experimental block on create/update), so the SDK
   surface stays flat too — table of `PRIVATE` / `SHARED` / `ALL` and
   tabbed Python + TS examples scoping by user.

Build: `bun run build` clean.

TS blocks still carry `// @noErrors` because `@composio/core` on npm
doesn't yet expose `composio.experimental.updateAcl` or the typed
`accountType` filter — both ship in PR #3424. Those directives come
out in a follow-up doc commit once the SDK publishes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 20:42:58 +05:30
Sarthak Agrawal d21df6b7f9 docs(changelog): introduce connected_accounts revoke endpoint (#3407)
# Description

Adds a customer-facing changelog entry announcing the new `POST
/api/v3.1/connected_accounts/{nanoid}/revoke` endpoint.

The entry covers:

- The endpoint shape, an example request, and an example `200 OK`
response (with the `revoked_tokens` array reflecting which token
subjects were killed at the provider on this call)
- Full status code table (`200` / `400` / `404` / `409` / `500`)
- **Revoke-then-delete semantics**: deleting a connected account does
NOT currently cascade to upstream revoke — customers should call
`/revoke` first if they need credentials killed at the provider. A
future release may cascade automatically; we'll announce separately
- **Best-effort behavior**: some providers don't expose revoke for one
or both token subjects; customers should always read `revoked_tokens`
rather than assume both were revoked
- **Externally revoked tokens**: if a user revokes via the provider's
UI, the revoke call may fail — such connections are eventually marked
`EXPIRED` by the platform

Endpoint path and response shape verified against
`apps/apollo/src/pages/api/v3.1/connected_accounts/[nanoId]/revoke.ts`
in hermes.

Follows `docs/.claude/guides/changelog.md` conventions (filename
`MM-DD-YY-suffix.mdx`, frontmatter with `title` + `date` +
`description`, sections start at `###`, no top-level `#`, no emojis).

> Note: SDK / public OpenAPI visibility for this endpoint is being added
in parallel in hermes — by the time this entry publishes, the endpoint
will be reachable from `backend.composio.dev` for customer projects.

# How did I test this PR

- Verified file location, filename pattern, and frontmatter against
`docs/.claude/guides/changelog.md` and a recent peer entry
(`12-30-25-proxy-binary-data.mdx`)
- Cross-checked the documented request path, response schema, and status
codes against
`apps/apollo/src/pages/api/v3.1/connected_accounts/[nanoId]/revoke.ts`
(route definition, `RevokeConnectedAccountResponseSchema`, declared
response codes)
- The repo's Fumadocs build (`bun run build`) validates MDX and will
catch any syntax / link issues in CI
2026-05-13 12:28:13 +05:30
Sushmithamallesh 466574be3a docs: update toolkits and API data 2026-05-13 06:06:06 +00:00
venkat82 22557104f9 docs(shared-connections): align code samples with experimental wire shape (hermes#9960)
The previous samples called the flat-field surface that `@composio/core@0.9.1`
and `composio==0.14.0` shipped. The wire is being restructured by
hermes#9960 to nest those fields under an `experimental` block, and the
follow-up SDK PRs will move the call sites to a matching `experimental`
namespace (mirroring the custom-tools precedent of `experimental_createTool`
/ `composio.experimental.tool`). This commit updates every code sample to
the post-restructure shape so the doc is internally consistent with the
experimental rollout it advertises in the top callout.

Specific changes:

- `link()`: `experimental: { accountType, aclConfigForShared }` (TS) /
  `experimental={"account_type": ..., "acl_config_for_shared": ...}` (Py).
- `updateAcl()` → `experimental_updateAcl(client, id, opts)` (TS top-level
  export, mirrors `experimental_createTool`) / `composio.experimental.update_acl(id, ...)`
  (Py, mirrors `composio.experimental.tool`).
- Retrieve response inspection now reads from `account.experimental?.accountType`
  / `account.experimental?.aclConfigForShared` to match the response shape.
- Error-handling examples use the experimental method names too.
- Common ACL patterns table clarifies the inner shape is wrapped inside the
  `experimental` block at the call site.
- Top callout updated to call out the namespace move so readers know what
  they're looking at.

TypeScript blocks that target the post-restructure surface carry
`// @noErrors` because the published `@composio/core@0.9.1` doesn't yet
expose `experimental_updateAcl` or the nested `experimental` options on
`link()`. The directives will come out in a follow-up docs PR once the
SDK PRs publish.

Pinning a SHARED connection in a session (`connectedAccounts: { gmail: [...] }`)
and direct execute (`composio.tools.execute(slug, { connectedAccountId })`)
stay unchanged — session config and execute aren't part of the experimental
wire restructure.

Verified: bun run build clean (1411 pages, no twoslash errors with @noErrors).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:44:47 +05:30
venkat82 b1f2a7976b docs(shared-connections): mark page as Experimental
Mirrors the convention used by `Custom Tools and Toolkits (Experimental)`:

- Title becomes `Shared Connections (Experimental)` so the experimental
  status is visible in the sidebar entry and at the top of the page.
- Adds a `<Callout type="warn">` immediately under the frontmatter with
  the same wording style custom-tools uses, plus a forward-looking note
  that the SDK surface is being restructured under a
  `composio.experimental.*` namespace so callers know to expect future
  migration.

Code samples stay on the currently-published SDK shape (flat
`accountType` / `aclConfigForShared` args on `link()`, `updateAcl()`,
`authorize()` — what `@composio/core@0.9.1` and `composio==0.14.0` ship
today) so twoslash continues to typecheck. A follow-up docs PR will
update them to the experimental-namespace shape once those SDK PRs
publish.

Verified: bun run build clean (1411 pages, no twoslash errors).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:36:10 +05:30
Zen Agent 357fa4a9d9 docs(changelog): address review feedback on revoke entry
- Reword 400 row: "Revoke is not supported for this toolkit"
- Simplify 404 row to "Connected account does not exist"
- Drop "Database failure" wording from 500 row
- Drop "(Today)" qualifier and the future-cascade speculation paragraph
- Drop the auto-EXPIRED platform-detection claim (not true for non-OAuth2
  or OAuth2 without refresh tokens)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-authored-by: sarthak <sarthak@composio.dev>
2026-05-12 11:47:16 +00:00
Zen Agent b78c8ba22a docs(changelog): fix May 8 minimum @composio/core version (0.10.0 → 0.9.1)
The May 8 changelog ("Session reuse, update, and connected accounts as
arrays") lists @composio/core ≥ 0.10.0 as the minimum version for the
composio.use() / session.update() / connectedAccounts-array changes, but
the latest published version on npm is 0.9.1 and the .create()/.use()
methods plus the array-shape connectedAccounts field are both present in
its public type surface (verified by extracting the published 0.9.1
tarball and grepping dist/*.d.cts). 0.10.0 does not exist on npm.

The adjacent May 7 changelog ("preload + direct tools preset") already
lists @composio/core ≥ 0.9.0, which is consistent with 0.9.1 being the
shipped version.

Co-authored-by: dhawal <dhawal@composio.dev>
2026-05-12 07:54:07 +00:00
Zen Agent df9298aeeb docs(changelog): introduce connected_accounts revoke endpoint
Add a customer-facing changelog entry for the new
POST /api/v3.1/connected_accounts/{nanoid}/revoke endpoint, documenting
revoke-then-delete semantics, best-effort behavior, and how externally
revoked connections are handled.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-authored-by: sarthak <sarthak@composio.dev>
2026-05-12 07:11:33 +00:00
venkat82 c31ffce2e4 docs: add Shared Connections page under Authentication
New page at /docs/auth-configuration/shared-connections covers the
account_type and per-user ACL surface added to the Connected Accounts
SDK in 0.9.1:

- When to use SHARED vs PRIVATE (table)
- Creating a SHARED connection via link() with an initial ACL
- The 4-step deny-wins resolution rule + common ACL patterns
- updateAcl() with PATCH semantics + empty-array footgun warning
- Using a shared connection from a tool-router session (pinning) or
  via direct execute with connectedAccountId
- Inspecting account_type + aclConfigForShared on get() responses
- Error handling table covering ComposioAclOnlyForSharedError,
  ComposioSharedAccessDeniedError, ComposioSharedConnectionNotAccessibleError

Other changes:

- Bump docs/package.json @composio/core dependency from ^0.9.0 to ^0.9.1
  so twoslash type-checks against the version that exposes the new
  fields.
- Wire the new page into the Authentication sidebar between
  connected-accounts and migrating-initiate-to-link.

Verified: bun run build clean (1411 pages including the new one).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 12:07:14 +05:30
Anshu Garg 6ed8c7487d docs(triggers): repoint links to the split Webhook Subscriptions / Webhook Endpoints API pages
Apollo split the Webhooks tag into Webhook Subscriptions + Webhook Endpoints, so /reference/api-reference/webhook-subscriptions and /webhook-endpoints are the canonical pages now. Repoint:

- glossary, creating-triggers, subscribing-to-events, webhook-verification, and the webhook-subscriptions changelog
- delete the orphan /reference/api-reference/webhooks/index.mdx (and its v3 twin) — Apollo's openapi.json no longer routes any operation to the legacy Webhooks tag, but generate-api-index iterates only tags-with-operations, so the orphan never got auto-removed (separate script bug, follow-up)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 13:01:02 +05:30
Anshu Garg 6c7be673e8 Merge remote-tracking branch 'origin/next' into docs/triggers-webhook-endpoints 2026-05-11 12:56:59 +05:30
Anshu Garg 0006e10323 docs(triggers): point Webhooks API links to specific create operations
The /reference/api-reference/webhooks page lists both Subscriptions and Endpoints operations on one page, so the generic page-level link was ambiguous about which API the prose was referring to. Each label now points to its create operation page (postWebhookSubscriptions / postWebhookEndpoints).

Also moves the Webhook Endpoints API pointer up out of Step 2 into the section intro so it scopes the whole walkthrough.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:36:56 +05:30
Anshu Garg 73a5ccf238 docs(triggers): add Webhook Endpoints API pointer + Notion ingress FAQ
- Single Webhook Endpoints API pointer at Step 2 of creating-triggers, mirroring the Subscriptions API pointer pattern; same pointer added to the Webhook Endpoint glossary entry.
- Reword Slack-walkthrough intro to direct readers to per-toolkit FAQ (Slack, Notion).
- Add "How do I set up the Notion webhook ingress endpoint?" FAQ covering the reverse-direction verification flow (token from Composio pasted back into Notion).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 12:31:49 +05:30
Anshu Garg 8ff9068a8c docs(scripts): clean up stale api-reference index.mdx for orphan tags (#3384)
# Description

`docs/scripts/generate-api-index.ts` iterates every tag declared in
`spec.tags` (both v3.1 and v3.0 OpenAPI specs) and writes an `index.mdx`
per tag. The old code did:

```ts
if (ops31.length === 0 && ops3.length === 0) continue;
```

When a tag is renamed in Apollo (recent example: `Webhooks` → `Webhook
Endpoints` + `Webhook Subscriptions`), the orphan tag is still listed in
`spec.tags` but no operation references it anymore. The script's
`continue` silently skips it. The previously-committed
`webhooks/index.mdx` (generated when those operations were still tagged
`Webhooks`) is left untouched on disk — and since git doesn't surface
"files we didn't change," the auto-update PR never includes the deletion
either. Result: a phantom **Webhooks** category survives in the rendered
docs alongside the new split categories, with broken `href`s pointing at
non-existent operation pages.

**Symptom:** [PR #3377
(auto-update-data)](https://github.com/ComposioHQ/composio/pull/3377/files)
added `webhook-endpoints/index.mdx` and
`webhook-subscriptions/index.mdx` but did not delete
`webhooks/index.mdx`, even though Apollo's openapi.json no longer routes
any operation to the `Webhooks` tag.

## What this changes

Replace the silent `continue` with an `rmSync` of any stale `index.mdx`
for that tag in both:

- `content/reference/api-reference/<slug>/index.mdx`
- `content/reference/v3/api-reference/<slug>/index.mdx`

The next scheduled `docs-update-data` run will pick up the orphan tag(s)
and surface the deletion(s) in the auto-PR — no manual `git rm` needed.

This is a minimal targeted fix (3-line behavior change at the exact spot
that already detects "tag is empty"). No new manifest files, no
full-directory wipes, no infra changes. Existing tags with operations
behave identically.

## Caveat

Only fixes the **fully orphan** tag case (zero ops in both v3.1 and
v3.0). The asymmetric case — tag has ops in one spec but not the other —
would still leave a stale file behind, since the per-spec write guards
on lines 98 and 136 don't have matching delete branches. Not in scope
for this PR; leaving as a follow-up if it ever happens.

# How did I test this PR

Sanity-ran `bun scripts/generate-api-index.ts` against the current
`next` openapi specs and confirmed all existing tag pages regenerate
identically (no spurious deletions, no diffs in `git status`).

End-to-end verification of the cleanup path against the post-retag specs
from PR #3377 left to reviewer — feed the PR-3377 `openapi.json` +
`openapi-v3.json` into `public/`, run the script, expect
`content/reference/api-reference/webhooks/index.mdx` and
`content/reference/v3/api-reference/webhooks/index.mdx` to be removed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-11 12:02:37 +05:30
Zen Agent 276b9521b6 docs: use session consistently when rehydrating with composio.use()
The TypeScript samples in the changelog and provider docs declared the
rehydrated session as `session2`, which is misleading — it's the same
logical session, just being recreated from a stored ID. Rename to
`session` to match the Python samples and add `// @noErrors` so twoslash
ignores the redeclaration (these blocks are illustrative, not runnable).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

Co-authored-by: abir <abir@composio.dev>
2026-05-08 23:40:57 +00:00
Abir Taheer 9c9b35787f docs: clarify to store session ID in db
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 15:26:27 -07:00
Abir Taheer 6c4a4ab7c4 docs: add missing .use() hints to OpenAI Agents MCP and Anthropic MCP tabs
Also fixes stale MCP prompt banner referencing old destructure pattern.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 15:25:49 -07:00
Abir Taheer 6114ec2908 docs: add composio.use() hints to all quickstart framework tabs
Each code example now shows how to store the session ID and reuse it
with composio.use() instead of calling create() again, as commented
code below the create call.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 13:32:39 -07:00
Anshu Garg ca658f1c52 docs(scripts): clean up stale api-reference index.mdx for orphan tags
generate-api-index.ts iterates every tag in spec.tags but used to `continue`
silently when a tag had zero operations in both v3.1 and v3.0 specs. After a
tag rename (e.g. Webhooks → Webhook Endpoints + Webhook Subscriptions), the
old tag dir still has an index.mdx from a prior run that points at the old
operationIds. The auto-update PR never includes a deletion for it, so the
phantom category lingers in the docs.

Replace the silent skip with an rmSync of any stale index.mdx for that tag
in both content/reference/api-reference/ and content/reference/v3/api-reference/.
Next auto-update run picks up the orphan and removes it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 22:53:37 +05:30
composio-ci-bot[bot] eeb7694368 docs: update toolkits and API data 2026-05-08 16:57:57 +00:00
Abir Taheer f4d942d791 docs: add changelog for session.use(), session.update(), connectedAccounts arrays
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 04:08:26 -07:00
Abir Taheer 7e76ea669d docs: fix chat-app wording per review
Sessions preserve tool access and connected accounts, not chat memory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 03:46:16 -07:00
Abir Taheer c1b1fa7fe8 docs: add session.update() section to users-and-sessions
Shows how to modify a session's config (toolkits, auth configs,
connected accounts, etc.) without creating a new session.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 03:26:27 -07:00
Abir Taheer 63535afc4d docs: update chat-app cookbook to use composio.use() for multi-turn
The chat app now creates the session once and reuses it across
requests via composio.use(sessionId), which is the correct pattern
for multi-turn chat apps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 03:11:09 -07:00
Abir Taheer 75e42e9690 docs: add multi-turn .use() examples to Vercel, OpenAI, Anthropic providers
Shows the pattern of creating a session once, storing the ID, and
reusing it across requests with composio.use().

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:55:33 -07:00
Abir Taheer 19a62962e9 docs: note that create() always returns a new session ID
Previously create() would return the same session ID for identical
configs. Now it always returns a new one for better isolation and
observability. Updated guidance to use composio.use() for multi-turn.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:45:03 -07:00
Abir Taheer ea51d55d35 docs: fix accordion wording, configs can be patched
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:38:17 -07:00
Abir Taheer 1252423481 docs: reframe .use() around session rehydration, not custom tools
Primary use case is multi-turn chat apps reusing a session across
requests. Custom tools are a secondary option when rehydrating.

- Added "Reusing a session" section to users-and-sessions.mdx
- Trimmed custom-tools page to a brief mention with link back
- Updated "When should I create a new session?" accordion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:37:47 -07:00
Abir Taheer 22d8ecb022 docs: remove (TypeScript only) from glossary custom tool entry
Python now supports custom tools and custom toolkits in sessions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 02:16:00 -07:00
Abir Taheer 0172eedf83 docs: use array format for connectedAccounts, add backwards-compat note
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 01:48:03 -07:00
Abir Taheer 1496fd78c1 docs: remove // @noErrors from new .use() code blocks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 01:45:12 -07:00
Abir Taheer 15df5fad7f docs: add .use() with custom tools, update connectedAccounts to array
- Added "Attaching custom tools to an existing session" section to
  custom-tools-and-toolkits.mdx showing composio.use() with customs
- Updated all connectedAccounts examples to array format (string[])
  matching the v3.1 SDK types
- Updated configuring-sessions to note multi-account restriction
- Updated users-and-sessions: custom tools can be attached to existing
  sessions via .use()
- Removed TypeScript-only qualifier for custom tools

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-08 01:45:12 -07:00
Dhawal Upadhyay 6877f59833 docs: elevate direct tools preset section 2026-05-08 14:01:40 +05:30
Dhawal Upadhyay 002392acbc docs: fix Python custom preload provider 2026-05-08 13:39:51 +05:30
Dhawal Upadhyay e42ff4b078 docs: use OpenAI agents tool names 2026-05-08 13:28:44 +05:30
Abir Taheer ab949b4fdf Merge branch 'next' into codex/toolrouter-preload-docs 2026-05-08 00:44:30 -07:00
Dhawal Upadhyay 007afe63b0 docs: document tool preloading 2026-05-08 12:47:13 +05:30
github-actions[bot] b55c0710f2 docs: update toolkits, API spec, and meta tools data (#3238) 2026-05-07 11:27:41 -07:00
palash-c 421bf90d48 Merge branch 'next' into docs/composio-mcp-plugin-page 2026-05-07 23:02:32 +05:30