import { z } from "zod"; import { WORKSPACE_ROLES } from "../../constants.js"; export const CreateOrgDto = z.object({ name: z.string().min(1).max(100) }); export type CreateOrgInput = z.infer; export const UpdateOrgDto = z.object({ name: z.string().min(1).max(100).optional(), logoUrl: z.string().url().max(2048).nullable().optional(), /** org policies (stored raw — enforcement is Phase 14) */ policy: z.record(z.unknown()).optional(), ssoConfig: z.record(z.unknown()).nullable().optional(), scimConfig: z.record(z.unknown()).nullable().optional(), retentionPolicies: z .array( z.object({ type: z.enum(["PURGE", "HOLD"]), scope: z.string().min(1).max(50), retainDays: z.number().int().min(0).max(3650).optional(), config: z.record(z.unknown()).default({}) }) ) .max(20) .optional() }); export type UpdateOrgInput = z.infer; export const InviteOrgMemberDto = z.object({ email: z.string().email().max(254), role: z.enum(WORKSPACE_ROLES).default("MEMBER") }); export type InviteOrgMemberInput = z.infer;