diff --git a/client/src/Pages/CreateMonitor/index.tsx b/client/src/Pages/CreateMonitor/index.tsx
index a2601e302..15b76eab3 100644
--- a/client/src/Pages/CreateMonitor/index.tsx
+++ b/client/src/Pages/CreateMonitor/index.tsx
@@ -337,14 +337,14 @@ const CreateMonitorPage = () => {
/>
{
}
// Find all status pages where `type` is a string (not yet migrated)
- const result = await StatusPageModel.updateMany({ type: { $type: "string" } }, [
+ const result = await StatusPageModel.updateMany({
+ $expr: {
+ $eq: [{ $type: "$type" }, "string"], // only scalar string, not existing array
+ }
+ }, [
{
$set: {
type: ["$type"],
diff --git a/server/src/validation/statusPageValidation.ts b/server/src/validation/statusPageValidation.ts
index b4b5e270c..c4d5005f3 100644
--- a/server/src/validation/statusPageValidation.ts
+++ b/server/src/validation/statusPageValidation.ts
@@ -10,13 +10,13 @@ export const getStatusPageParamValidation = z.object({
});
export const getStatusPageQueryValidation = z.object({
- type: z.literal("uptime"),
+ type: z.array(z.enum(["uptime", "infrastructure"])),
timeFrame: z.coerce.number().optional(),
});
export const createStatusPageBodyValidation = z
.object({
- type: z.literal("uptime"),
+ type: z.array(z.enum(["uptime", "infrastructure"])),
companyName: z.string().min(1, "Company name is required"),
url: z.string().regex(/^[a-zA-Z0-9_-]+$/, {
message: "URL can only contain letters, numbers, underscores, and hyphens",