diff --git a/server/routes.ts b/server/routes.ts index 2f3a00c..978a770 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -190,7 +190,15 @@ export async function registerRoutes(app: Express): Promise { app.post("/api/domains", requireRole(["admin", "manager"]), async (req, res) => { try { - const validatedData = insertDomainSchema.parse(req.body); + // Create a custom validation schema for the API that makes providerId optional + const domainSchema = z.object({ + name: z.string(), + organizationId: z.string().uuid(), + providerId: z.string().uuid().optional(), + isActive: z.boolean().optional().default(true) + }); + + const validatedData = domainSchema.parse(req.body); const domain = await storage.createDomain(validatedData); res.status(201).json(domain); } catch (error) { diff --git a/shared/schema.ts b/shared/schema.ts index 70eec54..06378ff 100644 --- a/shared/schema.ts +++ b/shared/schema.ts @@ -191,12 +191,17 @@ export const insertOrganizationSchema = createInsertSchema(organizations).pick({ isActive: true, }); -export const insertDomainSchema = createInsertSchema(domains).pick({ - name: true, - organizationId: true, - providerId: true, - isActive: true, -}); +export const insertDomainSchema = createInsertSchema(domains) + .pick({ + name: true, + organizationId: true, + providerId: true, + isActive: true, + }) + .extend({ + // Override providerId to make it optional + providerId: z.string().uuid().optional(), + }); export const insertDnsRecordSchema = createInsertSchema(dnsRecords).pick({ domainId: true,