1import { z } from "zod";
2import { WORKSPACE_ROLES } from "../../constants.js";
3
4export const CreateOrgDto = z.object({
5 name: z.string().min(1).max(100)
6});
7export type CreateOrgInput = z.infer<typeof CreateOrgDto>;
8
9export const UpdateOrgDto = z.object({
10 name: z.string().min(1).max(100).optional(),
11 logoUrl: z.string().url().max(2048).nullable().optional(),
12
13 policy: z.record(z.unknown()).optional(),
14 ssoConfig: z.record(z.unknown()).nullable().optional(),
15 scimConfig: z.record(z.unknown()).nullable().optional(),
16 retentionPolicies: z
17 .array(
18 z.object({
19 type: z.enum(["PURGE", "HOLD"]),
20 scope: z.string().min(1).max(50),
21 retainDays: z.number().int().min(0).max(3650).optional(),
22 config: z.record(z.unknown()).default({})
23 })
24 )
25 .max(20)
26 .optional()
27});
28export type UpdateOrgInput = z.infer<typeof UpdateOrgDto>;
29
30export const InviteOrgMemberDto = z.object({
31 email: z.string().email().max(254),
32 role: z.enum(WORKSPACE_ROLES).default("MEMBER")
33});
34export type InviteOrgMemberInput = z.infer<typeof InviteOrgMemberDto>;
35