From 1123a74813cee1847bbcd404cf647e1122365c45 Mon Sep 17 00:00:00 2001 From: Nik Richers Date: Mon, 3 Aug 2026 14:03:06 -0700 Subject: [PATCH] spike(docs): chunk Management API reference into one page per endpoint (#48547) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## I have read the CONTRIBUTING.md file. YES ## What kind of change does this PR introduce? This is an experimental spike that splits the Management API reference into one statically-generated page per endpoint, instead of the single monolithic page that currently renders all ~172 operations at `/reference/api`. Relates to DOCS-1268. ## What is the current behavior? - Linear item: Spike: chunk Management API reference into one page per endpoint - `/reference/api/introduction` (and every other API deep link) renders one ~35MB page containing all 172 endpoints, per `known-issues.md`'s "Reference page length" note — a known UX/LLM issue with no per-endpoint pages today - All API reference "navigation" is actually `preventDefault` + `pushState` + `scrollIntoView` within that one page (see `Reference.navigation.client.tsx`) ## What is the new behavior? - New `generateStaticParamsForApi()` in `Reference.utils.ts` emits one static param per API operation slug (~172 pages), independent of the SDK static-params generator - Fixed the permanent `/docs/reference/api` -> `/docs/reference/api/start` redirect in `apps/www/lib/redirects.js` (`start` was never a real content slug — it only worked because the old routing collapsed every sub-path to the monolith); now points straight at `introduction`, and `/start` itself still redirects there so old links/bookmarks don't 404 - `middleware.ts` only normalizes the bare `/reference/api` request now; `/reference/api/` falls through to the real per-operation page (or 404s if the slug is unknown) - `Reference.apiPage.tsx` branches on the resolved slug: no slug now redirects to `/reference/api/introduction` (the monolith-rendering branch is removed entirely — `ClientLibIntroduction`/`RefSections` are no longer used in this file), a slug renders just that one section via the existing `SectionSwitch`/`ApiEndpointSection`/`MarkdownSection` — no duplicated rendering logic - `Reference.navigation.tsx` / `Reference.navigation.client.tsx` gained an opt-in `realNavigation` prop; only the API reference's two `` call sites set it, so SDK/CLI/self-hosting sidebar behavior is byte-for-byte unchanged - Per-operation page metadata (title/description/canonical URL) ### Explicitly out of scope for this spike - `internals/generate-reference-markdown.ts` (the LLM `api.md` export) — still a single file, not split per endpoint - Any change to SDK, CLI, or self-hosting reference rendering or navigation - A hypothetical 2+-segment API path (`/reference/api/foo/bar`) previously collapsed silently to the monolith; it now 404s. Not reachable by any existing internal link today. ## Additional context - Worktree: `~/GitHub/supabase/supabase-worktrees/nrichers/nikrichers/docs-1268-spike-chunk-management-api-reference-into-one-page-per` - Verification: | Check | Result | | --- | --- | | `pnpm typecheck` (apps/docs) | ✅ pass | | `GET /reference/api` (bare) | ✅ 307, redirects to `/reference/api/introduction` (monolith removed) | | `GET /reference/api/introduction` | ✅ 200, new chunked page | | `GET /reference/api/v1-get-performance-advisors` | ✅ 200, new chunked page — confirmed via content size (~1.5MB vs ~35.5MB monolith) and heading-count diffing that only one operation renders | | `GET /reference/api/not-a-real-slug` | ✅ 404, confirms new static params + `dynamicParams=false` work as designed | | `GET /reference/cli`, `GET /reference/self-hosting-storage` | ✅ 200, unaffected — same shared nav components, no `realNavigation` passed | | `GET /reference/javascript`, `GET /reference/python` | ⚠️ 404 locally — not a regression; these need `codegen:references:new` output + `dev:secrets:pull` (internal env vars) that weren't run in this sandbox, unrelated to any file this PR touches | ### Before & After **Example (left: prod; right: PR)** image Preview is deployed: https://vercel.com/supabase/docs/43RzVCY6MkAbUuaDxdf9dPz7qsBu | Before (production) | After (PR preview) | | --- | --- | | - [Bare `/reference/api` (redirects to Introduction)](https://supabase.com/docs/reference/api)
- [Introduction](https://supabase.com/docs/reference/api/introduction)
- [Get performance advisors](https://supabase.com/docs/reference/api/v1-get-performance-advisors)
- [Get security advisors](https://supabase.com/docs/reference/api/v1-get-security-advisors)
- [Create log drain](https://supabase.com/docs/reference/api/v2-create-log-drain)
- [Delete log drain](https://supabase.com/docs/reference/api/v2-delete-log-drain)
- [Get project function combined stats](https://supabase.com/docs/reference/api/v1-get-project-function-combined-stats)
- [Get project logs](https://supabase.com/docs/reference/api/v1-get-project-logs)
- [Get project logs all](https://supabase.com/docs/reference/api/v1-get-project-logs-all)
- [Get project usage api count](https://supabase.com/docs/reference/api/v1-get-project-usage-api-count)
- [Get project usage request count](https://supabase.com/docs/reference/api/v1-get-project-usage-request-count)
- [List log drains](https://supabase.com/docs/reference/api/v2-list-log-drains)
- [Update log drain](https://supabase.com/docs/reference/api/v2-update-log-drain)
- [Create a sso provider](https://supabase.com/docs/reference/api/v1-create-a-sso-provider)
- [Create legacy signing key](https://supabase.com/docs/reference/api/v1-create-legacy-signing-key)
- [Create project signing key](https://supabase.com/docs/reference/api/v1-create-project-signing-key)
- [Create project tpa integration](https://supabase.com/docs/reference/api/v1-create-project-tpa-integration)
- [Delete a sso provider](https://supabase.com/docs/reference/api/v1-delete-a-sso-provider)
- [Delete project tpa integration](https://supabase.com/docs/reference/api/v1-delete-project-tpa-integration)
- [Get a sso provider](https://supabase.com/docs/reference/api/v1-get-a-sso-provider)
- [Get auth service config](https://supabase.com/docs/reference/api/v1-get-auth-service-config)
- [Get legacy signing key](https://supabase.com/docs/reference/api/v1-get-legacy-signing-key)
- [Get project signing key](https://supabase.com/docs/reference/api/v1-get-project-signing-key)
- [Get project signing keys](https://supabase.com/docs/reference/api/v1-get-project-signing-keys)
- [Get project tpa integration](https://supabase.com/docs/reference/api/v1-get-project-tpa-integration)
- [List all sso provider](https://supabase.com/docs/reference/api/v1-list-all-sso-provider)
- [List project tpa integrations](https://supabase.com/docs/reference/api/v1-list-project-tpa-integrations)
- [Remove project signing key](https://supabase.com/docs/reference/api/v1-remove-project-signing-key)
- [Update a sso provider](https://supabase.com/docs/reference/api/v1-update-a-sso-provider)
- [Update auth service config](https://supabase.com/docs/reference/api/v1-update-auth-service-config)
- [Update project signing key](https://supabase.com/docs/reference/api/v1-update-project-signing-key)
- [Apply project addon](https://supabase.com/docs/reference/api/v1-apply-project-addon)
- [List project addons](https://supabase.com/docs/reference/api/v1-list-project-addons)
- [Remove project addon](https://supabase.com/docs/reference/api/v1-remove-project-addon)
- [Accept invite external jit access](https://supabase.com/docs/reference/api/v1-accept-invite-external-jit-access)
- [Apply a migration](https://supabase.com/docs/reference/api/v1-apply-a-migration)
- [Authorize jit access](https://supabase.com/docs/reference/api/v1-authorize-jit-access)
- [Create login role](https://supabase.com/docs/reference/api/v1-create-login-role)
- [Delete invite external jit access](https://supabase.com/docs/reference/api/v1-delete-invite-external-jit-access)
- [Delete jit access](https://supabase.com/docs/reference/api/v1-delete-jit-access)
- [Delete login roles](https://supabase.com/docs/reference/api/v1-delete-login-roles)
- [Disable readonly mode temporarily](https://supabase.com/docs/reference/api/v1-disable-readonly-mode-temporarily)
- [Enable database webhook](https://supabase.com/docs/reference/api/v1-enable-database-webhook)
- [Generate typescript types](https://supabase.com/docs/reference/api/v1-generate-typescript-types)
- [Get a migration](https://supabase.com/docs/reference/api/v1-get-a-migration)
- [Get a snippet](https://supabase.com/docs/reference/api/v1-get-a-snippet)
- [Get backup schedule](https://supabase.com/docs/reference/api/v1-get-backup-schedule)
- [Get database metadata](https://supabase.com/docs/reference/api/v1-get-database-metadata)
- [Get database openapi](https://supabase.com/docs/reference/api/v1-get-database-openapi)
- [Get jit access](https://supabase.com/docs/reference/api/v1-get-jit-access)
- [Get jit access config](https://supabase.com/docs/reference/api/v1-get-jit-access-config)
- [Get pooler config](https://supabase.com/docs/reference/api/v1-get-pooler-config)
- [Get postgres config](https://supabase.com/docs/reference/api/v1-get-postgres-config)
- [Get project pgbouncer config](https://supabase.com/docs/reference/api/v1-get-project-pgbouncer-config)
- [Get readonly mode status](https://supabase.com/docs/reference/api/v1-get-readonly-mode-status)
- [Get ssl enforcement config](https://supabase.com/docs/reference/api/v1-get-ssl-enforcement-config)
- [Invite external jit access](https://supabase.com/docs/reference/api/v1-invite-external-jit-access)
- [List all backups](https://supabase.com/docs/reference/api/v1-list-all-backups)
- [List all snippets](https://supabase.com/docs/reference/api/v1-list-all-snippets)
- [List jit access](https://supabase.com/docs/reference/api/v1-list-jit-access)
- [List migration history](https://supabase.com/docs/reference/api/v1-list-migration-history)
- [Patch a migration](https://supabase.com/docs/reference/api/v1-patch-a-migration)
- [Read only query](https://supabase.com/docs/reference/api/v1-read-only-query)
- [Remove a read replica](https://supabase.com/docs/reference/api/v1-remove-a-read-replica)
- [Restore pitr backup](https://supabase.com/docs/reference/api/v1-restore-pitr-backup)
- [Rollback migrations](https://supabase.com/docs/reference/api/v1-rollback-migrations)
- [Run a query](https://supabase.com/docs/reference/api/v1-run-a-query)
- [Setup a read replica](https://supabase.com/docs/reference/api/v1-setup-a-read-replica)
- [Update backup schedule](https://supabase.com/docs/reference/api/v1-update-backup-schedule)
- [Update database password](https://supabase.com/docs/reference/api/v1-update-database-password)
- [Update jit access](https://supabase.com/docs/reference/api/v1-update-jit-access)
- [Update jit access config](https://supabase.com/docs/reference/api/v1-update-jit-access-config)
- [Update pooler config](https://supabase.com/docs/reference/api/v1-update-pooler-config)
- [Update postgres config](https://supabase.com/docs/reference/api/v1-update-postgres-config)
- [Update ssl enforcement config](https://supabase.com/docs/reference/api/v1-update-ssl-enforcement-config)
- [Upsert a migration](https://supabase.com/docs/reference/api/v1-upsert-a-migration)
- [Activate custom hostname](https://supabase.com/docs/reference/api/v1-activate-custom-hostname)
- [Activate vanity subdomain config](https://supabase.com/docs/reference/api/v1-activate-vanity-subdomain-config)
- [Check vanity subdomain availability](https://supabase.com/docs/reference/api/v1-check-vanity-subdomain-availability)
- [Deactivate vanity subdomain config](https://supabase.com/docs/reference/api/v1-deactivate-vanity-subdomain-config)
- [Get hostname config](https://supabase.com/docs/reference/api/v1-get-hostname-config)
- [Get vanity subdomain config](https://supabase.com/docs/reference/api/v1-get-vanity-subdomain-config)
- [Update hostname config](https://supabase.com/docs/reference/api/v1-update-hostname-config)
- [Verify dns config](https://supabase.com/docs/reference/api/v1-verify-dns-config)
- [Bulk update functions](https://supabase.com/docs/reference/api/v1-bulk-update-functions)
- [Create a function](https://supabase.com/docs/reference/api/v1-create-a-function)
- [Delete a function](https://supabase.com/docs/reference/api/v1-delete-a-function)
- [Deploy a function](https://supabase.com/docs/reference/api/v1-deploy-a-function)
- [Get a function](https://supabase.com/docs/reference/api/v1-get-a-function)
- [Get a function body](https://supabase.com/docs/reference/api/v1-get-a-function-body)
- [List all functions](https://supabase.com/docs/reference/api/v1-list-all-functions)
- [Update a function](https://supabase.com/docs/reference/api/v1-update-a-function)
- [Count action runs](https://supabase.com/docs/reference/api/v1-count-action-runs)
- [Create a branch](https://supabase.com/docs/reference/api/v1-create-a-branch)
- [Delete a branch](https://supabase.com/docs/reference/api/v1-delete-a-branch)
- [Diff a branch](https://supabase.com/docs/reference/api/v1-diff-a-branch)
- [Disable preview branching](https://supabase.com/docs/reference/api/v1-disable-preview-branching)
- [Get a branch](https://supabase.com/docs/reference/api/v1-get-a-branch)
- [Get a branch config](https://supabase.com/docs/reference/api/v1-get-a-branch-config)
- [Get action run](https://supabase.com/docs/reference/api/v1-get-action-run)
- [Get action run logs](https://supabase.com/docs/reference/api/v1-get-action-run-logs)
- [List action runs](https://supabase.com/docs/reference/api/v1-list-action-runs)
- [List all branches](https://supabase.com/docs/reference/api/v1-list-all-branches)
- [Merge a branch](https://supabase.com/docs/reference/api/v1-merge-a-branch)
- [Push a branch](https://supabase.com/docs/reference/api/v1-push-a-branch)
- [Reset a branch](https://supabase.com/docs/reference/api/v1-reset-a-branch)
- [Restore a branch](https://supabase.com/docs/reference/api/v1-restore-a-branch)
- [Update a branch config](https://supabase.com/docs/reference/api/v1-update-a-branch-config)
- [Update action run status](https://supabase.com/docs/reference/api/v1-update-action-run-status)
- [Authorize user](https://supabase.com/docs/reference/api/v1-authorize-user)
- [Exchange oauth token](https://supabase.com/docs/reference/api/v1-exchange-oauth-token)
- [Oauth authorize project claim](https://supabase.com/docs/reference/api/v1-oauth-authorize-project-claim)
- [Revoke token](https://supabase.com/docs/reference/api/v1-revoke-token)
- [Assign organization member role](https://supabase.com/docs/reference/api/v2-assign-organization-member-role)
- [Create an organization](https://supabase.com/docs/reference/api/v1-create-an-organization)
- [Get an organization](https://supabase.com/docs/reference/api/v1-get-an-organization)
- [Get organization entitlements](https://supabase.com/docs/reference/api/v1-get-organization-entitlements)
- [List all organizations](https://supabase.com/docs/reference/api/v1-list-all-organizations)
- [List organization members](https://supabase.com/docs/reference/api/v1-list-organization-members)
- [List organization members](https://supabase.com/docs/reference/api/v2-list-organization-members)
- [List organization roles](https://supabase.com/docs/reference/api/v2-list-organization-roles)
- [Create organization invitations](https://supabase.com/docs/reference/api/v2-create-organization-invitations)
- [Get profile](https://supabase.com/docs/reference/api/v1-get-profile)
- [Cancel a project restoration](https://supabase.com/docs/reference/api/v1-cancel-a-project-restoration)
- [Create a project](https://supabase.com/docs/reference/api/v1-create-a-project)
- [Create private link association](https://supabase.com/docs/reference/api/v2-create-private-link-association)
- [Delete a project](https://supabase.com/docs/reference/api/v1-delete-a-project)
- [Delete network bans](https://supabase.com/docs/reference/api/v1-delete-network-bans)
- [Delete private link association](https://supabase.com/docs/reference/api/v2-delete-private-link-association)
- [Get all projects for organization](https://supabase.com/docs/reference/api/v1-get-all-projects-for-organization)
- [Get available regions](https://supabase.com/docs/reference/api/v1-get-available-regions)
- [Get database disk](https://supabase.com/docs/reference/api/v1-get-database-disk)
- [Get disk utilization](https://supabase.com/docs/reference/api/v1-get-disk-utilization)
- [Get network restrictions](https://supabase.com/docs/reference/api/v1-get-network-restrictions)
- [Get postgres upgrade eligibility](https://supabase.com/docs/reference/api/v1-get-postgres-upgrade-eligibility)
- [Get postgres upgrade status](https://supabase.com/docs/reference/api/v1-get-postgres-upgrade-status)
- [Get project](https://supabase.com/docs/reference/api/v1-get-project)
- [Get project disk autoscale config](https://supabase.com/docs/reference/api/v1-get-project-disk-autoscale-config)
- [Get services health](https://supabase.com/docs/reference/api/v1-get-services-health)
- [List all network bans](https://supabase.com/docs/reference/api/v1-list-all-network-bans)
- [List all network bans enriched](https://supabase.com/docs/reference/api/v1-list-all-network-bans-enriched)
- [List all projects](https://supabase.com/docs/reference/api/v1-list-all-projects)
- [List available restore versions](https://supabase.com/docs/reference/api/v1-list-available-restore-versions)
- [List private link associations](https://supabase.com/docs/reference/api/v2-list-private-link-associations)
- [Modify database disk](https://supabase.com/docs/reference/api/v1-modify-database-disk)
- [Patch network restrictions](https://supabase.com/docs/reference/api/v1-patch-network-restrictions)
- [Pause a project](https://supabase.com/docs/reference/api/v1-pause-a-project)
- [Preview a project transfer](https://supabase.com/docs/reference/api/v2-preview-a-project-transfer)
- [Restart a project](https://supabase.com/docs/reference/api/v1-restart-a-project)
- [Restore a project](https://supabase.com/docs/reference/api/v1-restore-a-project)
- [Transfer a project](https://supabase.com/docs/reference/api/v2-transfer-a-project)
- [Update a project](https://supabase.com/docs/reference/api/v1-update-a-project)
- [Update network restrictions](https://supabase.com/docs/reference/api/v1-update-network-restrictions)
- [Upgrade postgres version](https://supabase.com/docs/reference/api/v1-upgrade-postgres-version)
- [Get realtime config](https://supabase.com/docs/reference/api/v1-get-realtime-config)
- [Shutdown realtime](https://supabase.com/docs/reference/api/v1-shutdown-realtime)
- [Update realtime config](https://supabase.com/docs/reference/api/v1-update-realtime-config)
- [Get postgrest service config](https://supabase.com/docs/reference/api/v1-get-postgrest-service-config)
- [Update postgrest service config](https://supabase.com/docs/reference/api/v1-update-postgrest-service-config)
- [Bulk create secrets](https://supabase.com/docs/reference/api/v1-bulk-create-secrets)
- [Bulk delete secrets](https://supabase.com/docs/reference/api/v1-bulk-delete-secrets)
- [Create project api key](https://supabase.com/docs/reference/api/v1-create-project-api-key)
- [Delete project api key](https://supabase.com/docs/reference/api/v1-delete-project-api-key)
- [Get pgsodium config](https://supabase.com/docs/reference/api/v1-get-pgsodium-config)
- [Get project api key](https://supabase.com/docs/reference/api/v1-get-project-api-key)
- [Get project api keys](https://supabase.com/docs/reference/api/v1-get-project-api-keys)
- [Get project legacy api keys](https://supabase.com/docs/reference/api/v1-get-project-legacy-api-keys)
- [List all secrets](https://supabase.com/docs/reference/api/v1-list-all-secrets)
- [Update pgsodium config](https://supabase.com/docs/reference/api/v1-update-pgsodium-config)
- [Update project api key](https://supabase.com/docs/reference/api/v1-update-project-api-key)
- [Update project legacy api keys](https://supabase.com/docs/reference/api/v1-update-project-legacy-api-keys)
- [Get storage config](https://supabase.com/docs/reference/api/v1-get-storage-config)
- [List all buckets](https://supabase.com/docs/reference/api/v1-list-all-buckets)
- [Update storage config](https://supabase.com/docs/reference/api/v1-update-storage-config) | - [Bare `/reference/api` (redirects to Introduction)](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api)
- [Introduction](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/introduction)
- [Get performance advisors](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-performance-advisors)
- [Get security advisors](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-security-advisors)
- [Create log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-log-drain)
- [Delete log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-delete-log-drain)
- [Get project function combined stats](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-function-combined-stats)
- [Get project logs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-logs)
- [Get project logs all](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-logs-all)
- [Get project usage api count](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-usage-api-count)
- [Get project usage request count](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-usage-request-count)
- [List log drains](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-log-drains)
- [Update log drain](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-update-log-drain)
- [Create a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-sso-provider)
- [Create legacy signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-legacy-signing-key)
- [Create project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-signing-key)
- [Create project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-tpa-integration)
- [Delete a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-sso-provider)
- [Delete project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-project-tpa-integration)
- [Get a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-sso-provider)
- [Get auth service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-auth-service-config)
- [Get legacy signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-legacy-signing-key)
- [Get project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-signing-key)
- [Get project signing keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-signing-keys)
- [Get project tpa integration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-tpa-integration)
- [List all sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-sso-provider)
- [List project tpa integrations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-project-tpa-integrations)
- [Remove project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-project-signing-key)
- [Update a sso provider](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-sso-provider)
- [Update auth service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-auth-service-config)
- [Update project signing key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-signing-key)
- [Apply project addon](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-apply-project-addon)
- [List project addons](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-project-addons)
- [Remove project addon](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-project-addon)
- [Accept invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-accept-invite-external-jit-access)
- [Apply a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-apply-a-migration)
- [Authorize jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-authorize-jit-access)
- [Create login role](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-login-role)
- [Delete invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-invite-external-jit-access)
- [Delete jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-jit-access)
- [Delete login roles](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-login-roles)
- [Disable readonly mode temporarily](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-disable-readonly-mode-temporarily)
- [Enable database webhook](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-enable-database-webhook)
- [Generate typescript types](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-generate-typescript-types)
- [Get a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-migration)
- [Get a snippet](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-snippet)
- [Get backup schedule](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-backup-schedule)
- [Get database metadata](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-metadata)
- [Get database openapi](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-openapi)
- [Get jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-jit-access)
- [Get jit access config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-jit-access-config)
- [Get pooler config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-pooler-config)
- [Get postgres config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-config)
- [Get project pgbouncer config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-pgbouncer-config)
- [Get readonly mode status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-readonly-mode-status)
- [Get ssl enforcement config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-ssl-enforcement-config)
- [Invite external jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-invite-external-jit-access)
- [List all backups](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-backups)
- [List all snippets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-snippets)
- [List jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-jit-access)
- [List migration history](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-migration-history)
- [Patch a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-patch-a-migration)
- [Read only query](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-read-only-query)
- [Remove a read replica](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-remove-a-read-replica)
- [Restore pitr backup](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-pitr-backup)
- [Rollback migrations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-rollback-migrations)
- [Run a query](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-run-a-query)
- [Setup a read replica](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-setup-a-read-replica)
- [Update backup schedule](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-backup-schedule)
- [Update database password](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-database-password)
- [Update jit access](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-jit-access)
- [Update jit access config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-jit-access-config)
- [Update pooler config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-pooler-config)
- [Update postgres config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-postgres-config)
- [Update ssl enforcement config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-ssl-enforcement-config)
- [Upsert a migration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-upsert-a-migration)
- [Activate custom hostname](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-activate-custom-hostname)
- [Activate vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-activate-vanity-subdomain-config)
- [Check vanity subdomain availability](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-check-vanity-subdomain-availability)
- [Deactivate vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-deactivate-vanity-subdomain-config)
- [Get hostname config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-hostname-config)
- [Get vanity subdomain config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-vanity-subdomain-config)
- [Update hostname config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-hostname-config)
- [Verify dns config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-verify-dns-config)
- [Bulk update functions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-update-functions)
- [Create a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-function)
- [Delete a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-function)
- [Deploy a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-deploy-a-function)
- [Get a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-function)
- [Get a function body](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-function-body)
- [List all functions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-functions)
- [Update a function](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-function)
- [Count action runs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-count-action-runs)
- [Create a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-branch)
- [Delete a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-branch)
- [Diff a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-diff-a-branch)
- [Disable preview branching](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-disable-preview-branching)
- [Get a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-branch)
- [Get a branch config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-a-branch-config)
- [Get action run](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-action-run)
- [Get action run logs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-action-run-logs)
- [List action runs](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-action-runs)
- [List all branches](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-branches)
- [Merge a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-merge-a-branch)
- [Push a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-push-a-branch)
- [Reset a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-reset-a-branch)
- [Restore a branch](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-a-branch)
- [Update a branch config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-branch-config)
- [Update action run status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-action-run-status)
- [Authorize user](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-authorize-user)
- [Exchange oauth token](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-exchange-oauth-token)
- [Oauth authorize project claim](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-oauth-authorize-project-claim)
- [Revoke token](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-revoke-token)
- [Assign organization member role](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-assign-organization-member-role)
- [Create an organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-an-organization)
- [Get an organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-an-organization)
- [Get organization entitlements](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-organization-entitlements)
- [List all organizations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-organizations)
- [List organization members](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-organization-members)
- [List organization members](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-organization-members)
- [List organization roles](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-organization-roles)
- [Create organization invitations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-organization-invitations)
- [Get profile](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-profile)
- [Cancel a project restoration](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-cancel-a-project-restoration)
- [Create a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-a-project)
- [Create private link association](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-create-private-link-association)
- [Delete a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-a-project)
- [Delete network bans](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-network-bans)
- [Delete private link association](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-delete-private-link-association)
- [Get all projects for organization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-all-projects-for-organization)
- [Get available regions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-available-regions)
- [Get database disk](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-database-disk)
- [Get disk utilization](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-disk-utilization)
- [Get network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-network-restrictions)
- [Get postgres upgrade eligibility](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-upgrade-eligibility)
- [Get postgres upgrade status](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgres-upgrade-status)
- [Get project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project)
- [Get project disk autoscale config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-disk-autoscale-config)
- [Get services health](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-services-health)
- [List all network bans](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-network-bans)
- [List all network bans enriched](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-network-bans-enriched)
- [List all projects](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-projects)
- [List available restore versions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-available-restore-versions)
- [List private link associations](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-list-private-link-associations)
- [Modify database disk](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-modify-database-disk)
- [Patch network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-patch-network-restrictions)
- [Pause a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-pause-a-project)
- [Preview a project transfer](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-preview-a-project-transfer)
- [Restart a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restart-a-project)
- [Restore a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-restore-a-project)
- [Transfer a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v2-transfer-a-project)
- [Update a project](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-a-project)
- [Update network restrictions](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-network-restrictions)
- [Upgrade postgres version](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-upgrade-postgres-version)
- [Get realtime config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-realtime-config)
- [Shutdown realtime](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-shutdown-realtime)
- [Update realtime config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-realtime-config)
- [Get postgrest service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-postgrest-service-config)
- [Update postgrest service config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-postgrest-service-config)
- [Bulk create secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-create-secrets)
- [Bulk delete secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-bulk-delete-secrets)
- [Create project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-create-project-api-key)
- [Delete project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-delete-project-api-key)
- [Get pgsodium config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-pgsodium-config)
- [Get project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-api-key)
- [Get project api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-api-keys)
- [Get project legacy api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-project-legacy-api-keys)
- [List all secrets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-secrets)
- [Update pgsodium config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-pgsodium-config)
- [Update project api key](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-api-key)
- [Update project legacy api keys](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-project-legacy-api-keys)
- [Get storage config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-get-storage-config)
- [List all buckets](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-list-all-buckets)
- [Update storage config](https://docs-git-nikrichers-docs-1268-spike-chunk-manag-905bfb-supabase.vercel.app/docs/reference/api/v1-update-storage-config) | 174 links per column: the bare `/reference/api` route plus all 173 API reference sections (Introduction + 172 operations). The bare-route link now redirects to Introduction on *both* sides (production already did via the `apps/www` fix earlier in this PR; the preview now matches, since the monolith-rendering branch is removed). For the other 173 links, production still resolves every one to today's same ~35MB monolith (all 172 endpoints on one page, regardless of which slug you clicked), while the preview serves each as its own individual per-endpoint page — click through any pair to compare page weight/content directly. ### Test plan - [ ] Open the PR preview and confirm `/reference/api/introduction` and a handful of `/reference/api/` URLs render as individual pages (not the full monolith) - [ ] Confirm the API reference sidebar navigates between real pages (URL changes, page reloads) without console errors - [ ] Confirm `/reference/javascript/...`, `/reference/cli`, and `/reference/self-hosting-*` render exactly as they do on production (no regression) - [ ] Confirm `/reference/api` (bare) now redirects to `/reference/api/introduction` instead of rendering all 172 operations ## Summary by CodeRabbit * **New Features** * Added individual pages for Management API operations with operation-specific titles, descriptions, metadata, and share previews. * API reference navigation now supports full page navigation between sections and operations. * **Bug Fixes** * Updated API reference routing to preserve direct links to operation pages. * Unknown API operations now return a not-found page. * **Documentation** * Updated Management API links and redirects to use the new API introduction page. * Bare API reference URLs now redirect to the introduction. --------- Co-authored-by: Nik Richers --- apps/docs/app/reference/[...slug]/page.tsx | 2 +- .../NavigationMenu.constants.ts | 2 +- apps/docs/features/docs/Reference.apiPage.tsx | 34 ++++++++++---- .../docs/Reference.navigation.client.tsx | 24 +++++++--- .../features/docs/Reference.navigation.tsx | 13 ++++-- apps/docs/features/docs/Reference.utils.ts | 46 ++++++++++++++++++- apps/docs/middleware.ts | 5 +- apps/www/lib/redirects.js | 12 ++++- 8 files changed, 112 insertions(+), 26 deletions(-) diff --git a/apps/docs/app/reference/[...slug]/page.tsx b/apps/docs/app/reference/[...slug]/page.tsx index 0ed5497704c..560623c6408 100644 --- a/apps/docs/app/reference/[...slug]/page.tsx +++ b/apps/docs/app/reference/[...slug]/page.tsx @@ -46,7 +46,7 @@ export default async function ReferencePage(props: { params: Promise<{ slug: Arr } else if (isCliReference) { return } else if (isApiReference) { - return + return } else if (isSelfHostingReference) { return ( diff --git a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts index b0b872ff4e7..08c99b5eed0 100644 --- a/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts +++ b/apps/docs/components/Navigation/NavigationMenu/NavigationMenu.constants.ts @@ -3630,7 +3630,7 @@ export const references = [ label: 'Management API', description: 'something about the reference', icon: '/docs/img/icons/api-icon.svg', - url: '/reference/management-api/start', + url: '/reference/api/introduction', }, ], }, diff --git a/apps/docs/features/docs/Reference.apiPage.tsx b/apps/docs/features/docs/Reference.apiPage.tsx index 3e77558f3e6..e8344cb3a85 100644 --- a/apps/docs/features/docs/Reference.apiPage.tsx +++ b/apps/docs/features/docs/Reference.apiPage.tsx @@ -1,13 +1,32 @@ +import { notFound, redirect } from 'next/navigation' + import { MenuId } from '~/components/Navigation/NavigationMenu/NavigationMenu' import { reference_api } from '~/components/Navigation/NavigationMenu/NavigationMenu.constants' -import { ClientLibIntroduction } from '~/features/docs/Reference.introduction' +import { getSectionsBySlug } from '~/features/docs/Reference.generated.singleton' import { ReferenceNavigation } from '~/features/docs/Reference.navigation' import { ReferenceContentScrollHandler } from '~/features/docs/Reference.navigation.client' -import { RefSections } from '~/features/docs/Reference.sections' +import { SectionSwitch } from '~/features/docs/Reference.sections' import { LayoutMainContent } from '~/layouts/DefaultLayout' import { SidebarSkeleton } from '~/layouts/MainSkeleton' -export async function ApiReferencePage() { +export async function ApiReferencePage({ path }: { path: Array }) { + const operationSlug = path[0] + + if (!operationSlug) { + redirect('/reference/api/introduction') + } + + return +} + +// DOCS-1268: one endpoint per page, reusing the same SectionSwitch (and +// therefore the same ApiEndpointSection/MarkdownSection) that used to render +// every operation on the single monolithic /reference/api page. +async function ApiOperationPage({ operationSlug }: { operationSlug: string }) { + const sectionsBySlug = await getSectionsBySlug('api', 'latest') + const section = sectionsBySlug?.get(operationSlug) + if (!section) notFound() + return ( } >
- - +
diff --git a/apps/docs/features/docs/Reference.navigation.client.tsx b/apps/docs/features/docs/Reference.navigation.client.tsx index 4ddf294fd20..b676573baaf 100644 --- a/apps/docs/features/docs/Reference.navigation.client.tsx +++ b/apps/docs/features/docs/Reference.navigation.client.tsx @@ -239,11 +239,16 @@ export function RefLink({ section, skipChildren = false, className, + realNavigation, }: { basePath: string section: AbbrevApiReferenceSection skipChildren?: boolean className?: string + // Spike (DOCS-1268): when true, this link does a real navigation instead of + // the scroll-hijack below — used only by the API reference, whose endpoints + // are now real pages. Undefined everywhere else preserves current behavior. + realNavigation?: boolean }) { const ref = useRef(null) @@ -260,8 +265,11 @@ export function RefLink({ }, [isActive, className]) const onClick = useCallback( - (evt: MouseEvent) => createReferenceSubsectionNavigator(href, section.slug)(evt), - [href, section.slug] + (evt: MouseEvent) => { + if (realNavigation) return + createReferenceSubsectionNavigator(href, section.slug)(evt) + }, + [href, section.slug, realNavigation] ) if (!('title' in section)) return null @@ -272,13 +280,13 @@ export function RefLink({ return ( <> {isCompoundSection ? ( - + ) : ( { return (
  • - +
  • ) })} diff --git a/apps/docs/features/docs/Reference.navigation.tsx b/apps/docs/features/docs/Reference.navigation.tsx index 51e594b2874..393624245c3 100644 --- a/apps/docs/features/docs/Reference.navigation.tsx +++ b/apps/docs/features/docs/Reference.navigation.tsx @@ -19,6 +19,10 @@ interface ReferenceNavigationProps { libPath: string version: string isLatestVersion: boolean + // Spike (DOCS-1268): API reference sidebar links navigate to real pages + // instead of scrolling within one giant page. SDK/CLI/self-hosting callers + // never pass this, so their behavior is unchanged. + realNavigation?: boolean } export async function ReferenceNavigation({ @@ -28,6 +32,7 @@ export async function ReferenceNavigation({ libPath, version, isLatestVersion, + realNavigation, }: ReferenceNavigationProps) { const navSections = await getReferenceSections(libraryId, version) const filteredNavSections = navSections?.filter((section) => section.title !== 'Auth') @@ -46,11 +51,11 @@ export async function ReferenceNavigation({ {displayedNavSections?.map((section, index) => section.type === 'category' ? (
  • - +
  • ) : (
  • - +
  • ) )} @@ -64,9 +69,11 @@ const topLvlRefNavItemStyles = 'leading-5' function RefCategory({ basePath, section, + realNavigation, }: { basePath: string section: AbbrevApiReferenceSection + realNavigation?: boolean }) { if (!('items' in section && section.items && section.items.length > 0)) return null @@ -77,7 +84,7 @@ function RefCategory({
      {section.items?.map((item) => (
    • - +
    • ))}
    diff --git a/apps/docs/features/docs/Reference.utils.ts b/apps/docs/features/docs/Reference.utils.ts index 5824f27901a..5fe986caaee 100644 --- a/apps/docs/features/docs/Reference.utils.ts +++ b/apps/docs/features/docs/Reference.utils.ts @@ -95,6 +95,21 @@ async function generateStaticParamsForSdkVersion(sdkId: string, version: string) })) } +// Spike (DOCS-1268): one static page per Management API endpoint, in addition +// to the existing bare `/reference/api` monolith. Deliberately does not reuse +// generateStaticParamsForSdkVersion's output shape — that function bakes in a +// 'crawlers' path segment for a separate crawler-only mechanism unrelated to +// these human-facing per-operation URLs. +async function generateStaticParamsForApi() { + const flattenedSections = await getFlattenedSections('api', 'latest') + + return (flattenedSections || []) + .filter((section) => section.type !== 'category' && !!section.slug) + .map((section) => ({ + slug: ['api', section.slug], + })) +} + export async function generateReferenceStaticParams() { const sdkPages = clientSdkIds .flatMap((sdkId) => @@ -117,6 +132,7 @@ export async function generateReferenceStaticParams() { { slug: ['api'], }, + ...(await generateStaticParamsForApi()), ] const selfHostingPages = selfHostingServices.map((service) => ({ @@ -178,9 +194,35 @@ export async function generateReferenceMetadata( description: 'CLI reference for the Supabase CLI', } } else if (isApiReference) { + const { path } = parsedPath + const operationSlug = path[0] + + const flattenedSections = operationSlug + ? await getFlattenedSections('api', 'latest') + : undefined + const sectionTitle = flattenedSections?.find((section) => section.slug === operationSlug)?.title + + const url = [BASE_PATH, 'reference', 'api', operationSlug].filter(Boolean).join('/') + const images = generateOpenGraphImageMeta({ + type: 'API Reference', + title: `Management API${sectionTitle ? `: ${sectionTitle}` : ''}`, + }) + return { - title: 'Management API Reference | Supabase Docs', - description: 'Management API reference for the Supabase API', + title: `${sectionTitle ? `${sectionTitle} | ` : ''}Management API Reference | Supabase Docs`, + description: `Management API reference for the Supabase API${sectionTitle ? `: ${sectionTitle}` : ''}`, + ...(operationSlug + ? { + alternates: { + canonical: url, + }, + } + : {}), + openGraph: { + ...parentOg, + url, + images, + }, } } else if (isSelfHostingReference) { return { diff --git a/apps/docs/middleware.ts b/apps/docs/middleware.ts index fd885725c23..cd31319d43f 100644 --- a/apps/docs/middleware.ts +++ b/apps/docs/middleware.ts @@ -63,7 +63,10 @@ export function middleware(request: NextRequest) { return NextResponse.rewrite(new URL(rewritePath, request.url)) } - if (lib === 'api') { + // Spike (DOCS-1268): only the bare /reference/api needs normalizing now. + // /reference/api/ has its own statically generated page — don't + // collapse it back to the monolith. + if (lib === 'api' && !maybeVersion) { const rewritePath = [REFERENCE_PATH, 'api'].join('/') return NextResponse.rewrite(new URL(rewritePath, request.url)) } diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js index 2ec7c41125d..866bef5ec9e 100644 --- a/apps/www/lib/redirects.js +++ b/apps/www/lib/redirects.js @@ -2081,7 +2081,17 @@ module.exports = [ { permanent: true, source: '/docs/reference/api', - destination: '/docs/reference/api/start', + destination: '/docs/reference/api/introduction', + }, + // 'start' was never a real API reference slug — it only ever worked because + // the old /reference/api/* routing collapsed every sub-path to the same + // monolith, and the bare /docs/reference/api redirect pointed here for years. + // Keep redirecting so external links and bookmarks don't 404 now that only + // real slugs resolve. + { + permanent: true, + source: '/docs/reference/api/start', + destination: '/docs/reference/api/introduction', }, { permanent: true,