fix(openapi): openapi document empty (#5579)

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Meier LukasandCopilot authored and GitHub committed 2026-04-29 23:29:42 +02:00
1 parent 0e7b9fa2d4
commit ce8e330c82
8 files changed
+26 -18

No files matched your search

@@ -2,7 +2,7 @@ import { headers } from "next/headers";
import { notFound } from "next/navigation";
import { Stack, Tabs, TabsList, TabsPanel, TabsTab } from "@mantine/core";
import { openApiDocument } from "@homarr/api";
import { openApiDocument } from "@homarr/api/open-api";
import { api } from "@homarr/api/server";
import { auth } from "@homarr/auth/next";
import { extractBaseUrlFromHeaders } from "@homarr/common";
@@ -30,7 +30,7 @@ export const FirstDayOfWeek = ({ user }: FirstDayOfWeekProps) => {
},
onSuccess(_, variables) {
form.setInitialValues({
firstDayOfWeek: variables.firstDayOfWeek,
firstDayOfWeek: variables.firstDayOfWeek as DayOfWeek,
});
showSuccessNotification({
message: t("user.action.changeFirstDayOfWeek.notification.success.message"),
+3 -2
View File
@@ -2,7 +2,8 @@ import type { NextRequest } from "next/server";
import { userAgent } from "next/server";
import { createOpenApiFetchHandler } from "trpc-to-openapi";
import { appRouter, createTRPCContext } from "@homarr/api";
import { createTRPCContext } from "@homarr/api";
import { openApiRouter } from "@homarr/api/open-api";
import { API_KEY_HEADER_NAME, getSessionFromApiKeyAsync } from "@homarr/auth/api-key";
import { ipAddressFromHeaders } from "@homarr/common/server";
import { createLogger } from "@homarr/core/infrastructure/logs";
@@ -30,7 +31,7 @@ const handlerAsync = async (req: NextRequest) => {
return createOpenApiFetchHandler({
req,
endpoint: "/",
router: appRouter,
router: openApiRouter,
createContext: () => createTRPCContext({ session, headers: req.headers }),
onError({ error, path, type }) {
logger.error(new ErrorWithMetadata("tRPC Error occured", { path, type }, { cause: error }));
+1 -1
View File
@@ -1,6 +1,6 @@
import { NextResponse } from "next/server";
import { openApiDocument } from "@homarr/api";
import { openApiDocument } from "@homarr/api/open-api";
import { extractBaseUrlFromHeaders } from "@homarr/common";
export function GET(request: Request) {
+2 -1
View File
@@ -9,7 +9,8 @@
"./client": "./src/client.ts",
"./server": "./src/server.ts",
"./websocket": "./src/websocket.ts",
"./shared": "./src/shared.ts"
"./shared": "./src/shared.ts",
"./open-api": "./src/open-api.ts"
},
"main": "./index.ts",
"types": "./index.ts",
+1 -2
View File
@@ -1,6 +1,5 @@
import type { inferRouterInputs, inferRouterOutputs } from "@trpc/server";
import { openApiDocument } from "./open-api";
import type { AppRouter } from "./root";
import { appRouter } from "./root";
import { createCallerFactory, createTRPCContext } from "./trpc";
@@ -30,5 +29,5 @@ type RouterInputs = inferRouterInputs<AppRouter>;
**/
type RouterOutputs = inferRouterOutputs<AppRouter>;
export { createTRPCContext, appRouter, createCaller, openApiDocument };
export { createTRPCContext, appRouter, createCaller };
export type { AppRouter, RouterInputs, RouterOutputs };
+13 -2
View File
@@ -2,10 +2,21 @@ import { generateOpenApiDocument } from "trpc-to-openapi";
import { API_KEY_HEADER_NAME } from "@homarr/auth/api-key";
import { appRouter } from "./root";
import { appRouter } from "./router/app";
import { infoRouter } from "./router/info";
import { inviteRouter } from "./router/invite";
import { userRouter } from "./router/user";
import { createTRPCRouter } from "./trpc";
export const openApiRouter = createTRPCRouter({
appRouter,
infoRouter,
inviteRouter,
userRouter,
});
export const openApiDocument = (base: string) =>
generateOpenApiDocument(appRouter, {
generateOpenApiDocument(openApiRouter, {
title: "Homarr API documentation",
version: "1.0.0",
baseUrl: base,
+4 -8
View File
@@ -138,14 +138,10 @@ export const userChangeColorSchemeSchema = z.object({
export const userFirstDayOfWeekSchema = z.object({
firstDayOfWeek: z
.custom<DayOfWeek>((value) => z.number().min(0).max(6).safeParse(value).success)
.meta({
override: {
type: "integer",
minimum: 0,
maximum: 6,
},
}),
.number()
.min(0)
.max(6)
.transform((value) => value as DayOfWeek),
});
export const userPingIconsEnabledSchema = z.object({