From bd375ab9dbfe904ea80eecdf9446361b934dcf10 Mon Sep 17 00:00:00 2001 From: Laras Date: Fri, 12 Jun 2026 02:11:06 +0000 Subject: [PATCH] PEN-123 expose onboarding API bridge Co-authored-by: multica-agent --- .../+server.js | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 web/src/routes/api/v1/organization-onboarding-requests/+server.js diff --git a/web/src/routes/api/v1/organization-onboarding-requests/+server.js b/web/src/routes/api/v1/organization-onboarding-requests/+server.js new file mode 100644 index 0000000..c44fc1e --- /dev/null +++ b/web/src/routes/api/v1/organization-onboarding-requests/+server.js @@ -0,0 +1,51 @@ +const DEFAULT_API_BASE_URL = "http://localhost:4621"; +const TARGET_PATH = "/api/v1/organization-onboarding-requests"; + +function apiBaseURL() { + const configured = (import.meta.env.VITE_API_BASE_URL || "").trim(); + return (configured || DEFAULT_API_BASE_URL).replace(/\/$/, ""); +} + +function forwardedHeaders(request) { + const headers = new Headers(); + + for (const name of ["accept", "authorization", "content-type"]) { + const value = request.headers.get(name); + if (value) { + headers.set(name, value); + } + } + + if (!headers.has("accept")) { + headers.set("accept", "application/json"); + } + + return headers; +} + +function responseHeaders(upstream) { + const headers = new Headers(); + + for (const name of ["content-type", "cache-control"]) { + const value = upstream.headers.get(name); + if (value) { + headers.set(name, value); + } + } + + return headers; +} + +export async function POST({ request, fetch }) { + const upstream = await fetch(`${apiBaseURL()}${TARGET_PATH}`, { + method: "POST", + headers: forwardedHeaders(request), + body: await request.text(), + }); + + return new Response(upstream.body, { + status: upstream.status, + statusText: upstream.statusText, + headers: responseHeaders(upstream), + }); +}