feat(studio): port API handlers to TanStack server routes (stack 4/6, from #46424) (#47113)

**Stack 4/6** of the TanStack Start migration (#46424). Stacked on
**#47112** (S3).

> [!NOTE]
> Mechanical and homogeneous — every file is the same shape: a
`createFileRoute(...)` whose `server.handlers` delegate to the existing
`pages/api` handler via `toWebHandler` (the compat shim from S2). The
pages-router handlers are unchanged; Next still serves them directly and
ignores `routes/`.

## What's in this PR
- `routes/api/**` (~104 files): platform (`pg-meta`, auth, storage,
integrations, profile, telemetry, organizations, projects…), `ai/*`,
`v1/*`, `connect`, `content`/`mcp`, and standalone endpoints
(`deployment-mode`, `get-ip-address`, etc.).
- `routeTree.gen.ts` — **regenerated** for the routes present so far
(root + auth/app + api).

## Review tip
The route files are near-identical wrappers, so this is fast to skim.
The generated `routeTree.gen.ts` isn't meaningful review surface.

## Verification
On top of S1–S3: `studio` typecheck ✓, lint (0 errors) ✓.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Added Model Context Protocol (MCP) API endpoint with configurable
feature support and read-only mode
* Added function artifact streaming capability for self-hosted functions

* **Chores**
  * Migrated API route infrastructure for improved system architecture

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
This commit is contained in:
authored and GitHub committed 2026-06-30 17:18:35 +08:00
1 parent 90526fe0b0
commit 2f90228f04
105 files changed
+3570

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import complete from '@/pages/api/ai/code/complete'
const handler = toWebHandler(complete)
export const Route = createFileRoute('/api/ai/code/complete')({
server: { handlers: { POST: handler } },
})
+15
View File
@@ -0,0 +1,15 @@
import { createFileRoute } from '@tanstack/react-router'
import type { NextRequest } from 'next/server'
// docs.ts is already Web-native (Next edge runtime): takes `NextRequest`,
// returns `Response`, and streams SSE back from OpenAI. Direct re-export —
// no shim buffering needed.
import docsHandler from '@/pages/api/ai/docs'
export const Route = createFileRoute('/api/ai/docs')({
server: {
handlers: {
POST: ({ request }) => docsHandler(request as NextRequest),
},
},
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import classify from '@/pages/api/ai/feedback/classify'
const handler = toWebHandler(classify)
export const Route = createFileRoute('/api/ai/feedback/classify')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import rate from '@/pages/api/ai/feedback/rate'
const handler = toWebHandler(rate)
export const Route = createFileRoute('/api/ai/feedback/rate')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import design from '@/pages/api/ai/onboarding/design'
const handler = toWebHandler(design)
export const Route = createFileRoute('/api/ai/onboarding/design')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import checkApiKey from '@/pages/api/ai/sql/check-api-key'
const handler = toWebHandler(checkApiKey)
export const Route = createFileRoute('/api/ai/sql/check-api-key')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import cronV2 from '@/pages/api/ai/sql/cron-v2'
const handler = toWebHandler(cronV2)
export const Route = createFileRoute('/api/ai/sql/cron-v2')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import filterV1 from '@/pages/api/ai/sql/filter-v1'
const handler = toWebHandler(filterV1)
export const Route = createFileRoute('/api/ai/sql/filter-v1')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import generateV4 from '@/pages/api/ai/sql/generate-v4'
const handler = toWebHandler(generateV4)
export const Route = createFileRoute('/api/ai/sql/generate-v4')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/ai/sql/parse-client-code'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/ai/sql/parse-client-code')({
server: { handlers: { POST: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import policy from '@/pages/api/ai/sql/policy'
const handler = toWebHandler(policy)
export const Route = createFileRoute('/api/ai/sql/policy')({
server: { handlers: { POST: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import titleV2 from '@/pages/api/ai/sql/title-v2'
const handler = toWebHandler(titleV2)
export const Route = createFileRoute('/api/ai/sql/title-v2')({
server: { handlers: { POST: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import checkCname from '@/pages/api/check-cname'
const handler = toWebHandler(checkCname)
export const Route = createFileRoute('/api/check-cname')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import cliReleaseVersion from '@/pages/api/cli-release-version'
const handler = toWebHandler(cliReleaseVersion)
export const Route = createFileRoute('/api/cli-release-version')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import getFileNames from '@/pages/api/connect'
const handler = toWebHandler(getFileNames)
export const Route = createFileRoute('/api/connect/')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import graphql from '@/pages/api/content/graphql'
const handler = toWebHandler(graphql)
export const Route = createFileRoute('/api/content/graphql')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import test from '@/pages/api/edge-functions/test'
const handler = toWebHandler(test)
export const Route = createFileRoute('/api/edge-functions/test')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import enabledFeaturesOverrides from '@/pages/api/enabled-features-overrides'
const handler = toWebHandler(enabledFeaturesOverrides)
export const Route = createFileRoute('/api/enabled-features-overrides')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import generateAttachmentUrl from '@/pages/api/generate-attachment-url'
const handler = toWebHandler(generateAttachmentUrl)
export const Route = createFileRoute('/api/generate-attachment-url')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import getDeploymentCommit from '@/pages/api/get-deployment-commit'
const handler = toWebHandler(getDeploymentCommit)
export const Route = createFileRoute('/api/get-deployment-commit')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import getIpAddress from '@/pages/api/get-ip-address'
const handler = toWebHandler(getIpAddress)
export const Route = createFileRoute('/api/get-ip-address')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/get-s3-keys'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/get-s3-keys')({
server: { handlers: { GET: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import getUtcTime from '@/pages/api/get-utc-time'
const handler = toWebHandler(getUtcTime)
export const Route = createFileRoute('/api/get-utc-time')({
server: { handlers: { GET: handler } },
})
+16
View File
@@ -0,0 +1,16 @@
import { createFileRoute } from '@tanstack/react-router'
// App Router route (apps/studio/app/api/incident-banner/route.ts) — already
// Web-native, uses NextResponse which extends `Response`. Direct re-export of
// each HTTP method; no shim needed.
import { GET, HEAD, OPTIONS } from '@/app/api/incident-banner/route'
export const Route = createFileRoute('/api/incident-banner')({
server: {
handlers: {
GET: () => GET(),
HEAD: () => HEAD(),
OPTIONS: () => OPTIONS(),
},
},
})
+16
View File
@@ -0,0 +1,16 @@
import { createFileRoute } from '@tanstack/react-router'
// App Router route (apps/studio/app/api/incident-status/route.ts) — already
// Web-native, uses NextResponse which extends `Response`. Direct re-export of
// each HTTP method; no shim needed.
import { GET, HEAD, OPTIONS } from '@/app/api/incident-status/route'
export const Route = createFileRoute('/api/incident-status')({
server: {
handlers: {
GET: () => GET(),
HEAD: () => HEAD(),
OPTIONS: () => OPTIONS(),
},
},
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import stripeSync from '@/pages/api/integrations/stripe-sync'
const handler = toWebHandler(stripeSync)
export const Route = createFileRoute('/api/integrations/stripe-sync')({
server: { handlers: { POST: handler, DELETE: handler } },
})
+110
View File
@@ -0,0 +1,110 @@
import { WebStandardStreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js'
import { createSupabaseMcpServer, SupabasePlatform } from '@supabase/mcp-server-supabase'
import { createFileRoute } from '@tanstack/react-router'
import { stripIndent } from 'common-tags'
import { z } from 'zod'
import { commaSeparatedStringIntoArray, zBooleanString } from '@/lib/api/apiHelpers'
import {
getDatabaseOperations,
getDebuggingOperations,
getDevelopmentOperations,
} from '@/lib/api/self-hosted/mcp'
import { DEFAULT_PROJECT } from '@/lib/constants/api'
// Twin of `pages/api/mcp/index.ts`. Web-fetch rewrite — the
// pages-router version used the SDK's Node-shaped
// `StreamableHTTPServerTransport`, which writes directly to the Node
// `res` and can't run through the buffering `toWebHandler` shim. MCP's
// `WebStandardStreamableHTTPServerTransport` accepts a Web `Request`
// and returns a Web `Response` directly, so the handler can pass the
// request through unmodified.
const supportedFeatureGroupSchema = z.enum(['docs', 'database', 'development', 'debugging'])
const mcpQuerySchema = z.object({
features: z
.string()
.transform(commaSeparatedStringIntoArray)
.optional()
.describe(
stripIndent`
A comma-separated list of feature groups to filter tools by. If not provided, all tools are available.
The following feature groups are supported: ${supportedFeatureGroupSchema.options.map((group) => `\`${group}\``).join(', ')}.
`
)
.pipe(z.array(supportedFeatureGroupSchema).optional()),
read_only: zBooleanString()
.default('false')
.describe(
'Indicates whether or not the MCP server should operate in read-only mode. This prevents write operations on any of your databases by executing SQL as a read-only Postgres user.'
),
})
const POST = async ({ request }: { request: Request }) => {
const url = new URL(request.url)
const query = Object.fromEntries(url.searchParams.entries())
const { error, data } = mcpQuerySchema.safeParse(query)
if (error) {
return new Response(JSON.stringify({ error: error.flatten().fieldErrors }), {
status: 400,
headers: { 'Content-Type': 'application/json' },
})
}
const { features, read_only } = data
const headers = request.headers
const platform: SupabasePlatform = {
database: getDatabaseOperations({ headers }),
development: getDevelopmentOperations({ headers }),
debugging: getDebuggingOperations({ headers }),
}
try {
const server = createSupabaseMcpServer({
platform,
projectId: DEFAULT_PROJECT.ref,
features,
readOnly: read_only,
})
const transport = new WebStandardStreamableHTTPServerTransport({
sessionIdGenerator: undefined, // Stateless, don't use session management
enableJsonResponse: true, // Stateless, discourage SSE streams
})
await server.connect(transport)
return await transport.handleRequest(request)
} catch (err) {
// Errors at this point will be due to MCP setup issues. Subsequent
// errors are handled at the JSON-RPC level inside the protocol.
if (err instanceof Error) {
return new Response(JSON.stringify({ error: err.message }), {
status: 400,
headers: { 'Content-Type': 'application/json' },
})
}
// `err` here is a non-Error throw, so stringify a safe representation
// rather than embedding the raw value — a circular/non-serializable
// object would make JSON.stringify throw inside the catch and turn this
// into an unhandled 500.
return new Response(
JSON.stringify({ error: 'Unable to process MCP request', cause: String(err) }),
{
status: 500,
headers: { 'Content-Type': 'application/json' },
}
)
}
}
export const Route = createFileRoute('/api/mcp/')({
server: {
handlers: {
POST,
},
},
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/parse-query'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/parse-query')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/invite'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/invite')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/magiclink'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/magiclink')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/otp'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/otp')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/recover'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/recover')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/users/[id]/factors'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/users/$id/factors')({
server: { handlers: { DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/users/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/users/$id/')({
server: { handlers: { PATCH: handler, DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/auth/[ref]/users'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/auth/$ref/users/')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/database/[ref]/pooling'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/database/$ref/pooling')({
server: { handlers: { GET: handler, PATCH: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/deployment-mode'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/deployment-mode')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/integrations/[slug]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/integrations/$slug')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/integrations/github/authorization'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/integrations/github/authorization')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/integrations/github/connections'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/integrations/github/connections')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/integrations/github/repositories'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/integrations/github/repositories')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/organizations/[slug]/billing/subscription'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/organizations/$slug/billing/subscription')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/organizations'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/organizations/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/column-privileges'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/column-privileges')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/extensions'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/extensions')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/foreign-tables'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/foreign-tables')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/materialized-views'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/materialized-views')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/policies'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/policies')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/publications'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/publications')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/query'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/query/')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/tables'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/tables')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/triggers'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/triggers')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/types'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/types')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/pg-meta/[ref]/views'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/pg-meta/$ref/views')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/profile'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/profile/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/analytics/endpoints/[name]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/analytics/endpoints/$name')({
server: { handlers: { GET: handler, POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/analytics/log-drains'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/analytics/log-drains')({
server: { handlers: { GET: handler, POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/analytics/log-drains/[uuid]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/analytics/log-drains/$uuid')({
server: { handlers: { GET: handler, PUT: handler, DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/api-keys/temporary'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/api-keys/temporary')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/api/graphql'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/api/graphql')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/api/rest'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/api/rest')({
server: { handlers: { GET: handler, HEAD: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/billing/addons'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/billing/addons')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/config'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/config/')({
server: { handlers: { GET: handler, PATCH: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/config/postgrest'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/config/postgrest')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/config/secrets/update-status'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/config/secrets/update-status')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/content/count'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/content/count')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/content/folders/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/content/folders/$id')({
server: { handlers: { GET: handler, PATCH: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/content/folders'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/content/folders/')({
server: { handlers: { GET: handler, POST: handler, DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/content'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/content/')({
server: { handlers: { GET: handler, PUT: handler, DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/content/item/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/content/item/$id')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/databases'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/databases')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/infra-monitoring'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/infra-monitoring')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/run-lints'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/run-lints')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects/[ref]/settings'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/$ref/settings')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/projects'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/projects/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/props/org/[slug]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/props/org/$slug')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/props/project/[ref]/api'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/props/project/$ref/api')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/props/project/[ref]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/props/project/$ref/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/empty'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/empty')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/')({
server: { handlers: { GET: handler, PATCH: handler, DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/download'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/download')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/')({
server: { handlers: { DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/list'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/list')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/move'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/move')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/public-url'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/public-url')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/sign-multi'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/sign-multi')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets/[id]/objects/sign'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/$id/objects/sign')({
server: { handlers: { POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/buckets'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/buckets/')({
server: { handlers: { GET: handler, POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/vector-buckets/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/vector-buckets/$id/')({
server: { handlers: { GET: handler, DELETE: handler } },
})
@@ -0,0 +1,12 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/vector-buckets/[id]/indexes/[indexName]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute(
'/api/platform/storage/$ref/vector-buckets/$id/indexes/$indexName'
)({
server: { handlers: { DELETE: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/vector-buckets/[id]/indexes'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/vector-buckets/$id/indexes/')({
server: { handlers: { GET: handler, POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/storage/[ref]/vector-buckets'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/storage/$ref/vector-buckets/')({
server: { handlers: { GET: handler, POST: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/platform/telemetry/event'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/platform/telemetry/event')({
server: { handlers: { POST: handler } },
})
+10
View File
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import statusOverride from '@/pages/api/status-override'
const handler = toWebHandler(statusOverride)
export const Route = createFileRoute('/api/status-override')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/v1/projects/[ref]/api-keys'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/v1/projects/$ref/api-keys')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/v1/projects/[ref]/api-keys/[id]'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/v1/projects/$ref/api-keys/$id')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/v1/projects/[ref]/config/auth/signing-keys'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/v1/projects/$ref/config/auth/signing-keys/')({
server: { handlers: { GET: handler } },
})
@@ -0,0 +1,10 @@
import { createFileRoute } from '@tanstack/react-router'
import { toWebHandler } from '@/compat/next/api'
import nextHandler from '@/pages/api/v1/projects/[ref]/config/auth/signing-keys/legacy'
const handler = toWebHandler(nextHandler)
export const Route = createFileRoute('/api/v1/projects/$ref/config/auth/signing-keys/legacy')({
server: { handlers: { GET: handler } },
})
Loaded 100 of 105 files, more files were not shown because too many files have changed in this diff. Show more