97 lines
3.1 KiB
TypeScript
97 lines
3.1 KiB
TypeScript
import { z } from "zod";
|
|
|
|
import { userSchema } from "./common";
|
|
|
|
// ─── workspace.all ───────────────────────────────────────────
|
|
export const workspaceListItemSchema = z.object({
|
|
role: z.string(),
|
|
workspace: z.object({
|
|
publicId: z.string(),
|
|
name: z.string(),
|
|
description: z.string().nullable(),
|
|
slug: z.string(),
|
|
plan: z.enum(["free", "team", "pro", "enterprise"]),
|
|
weekStartDay: z.number().nullable(),
|
|
cardPrefix: z.string(),
|
|
deletedAt: z.date().nullable(),
|
|
}),
|
|
});
|
|
|
|
// ─── workspace.byId ──────────────────────────────────────────
|
|
const workspaceMemberDetailSchema = z.object({
|
|
publicId: z.string(),
|
|
email: z.string().optional(),
|
|
role: z.string(),
|
|
status: z.string(),
|
|
createdAt: z.date(),
|
|
user: z
|
|
.object({
|
|
id: z.string().nullable(),
|
|
name: z.string().nullable(),
|
|
email: z.string().optional(),
|
|
image: z.string().nullable(),
|
|
})
|
|
.nullable(),
|
|
});
|
|
|
|
const workspaceSubscriptionSchema = z.object({
|
|
plan: z.string(),
|
|
status: z.string(),
|
|
seats: z.number().nullable(),
|
|
unlimitedSeats: z.boolean().nullable(),
|
|
partnerTier: z.number().nullable(),
|
|
periodStart: z.date().nullable(),
|
|
periodEnd: z.date().nullable(),
|
|
});
|
|
|
|
export const workspaceDetailSchema = z.object({
|
|
publicId: z.string(),
|
|
name: z.string(),
|
|
slug: z.string(),
|
|
showEmailsToMembers: z.boolean().nullable(),
|
|
weekStartDay: z.number().nullable(),
|
|
members: z.array(workspaceMemberDetailSchema),
|
|
subscriptions: z.array(workspaceSubscriptionSchema),
|
|
});
|
|
|
|
// ─── workspace.bySlug ────────────────────────────────────────
|
|
export const workspaceWithBoardsSchema = z.object({
|
|
publicId: z.string(),
|
|
name: z.string(),
|
|
description: z.string().nullable(),
|
|
slug: z.string(),
|
|
boards: z.array(
|
|
z.object({
|
|
publicId: z.string(),
|
|
slug: z.string(),
|
|
name: z.string(),
|
|
}),
|
|
),
|
|
});
|
|
|
|
// ─── workspace.create ────────────────────────────────────────
|
|
export const workspaceCreateResponseSchema = z.object({
|
|
publicId: z.string(),
|
|
name: z.string(),
|
|
slug: z.string(),
|
|
description: z.string().nullable(),
|
|
plan: z.enum(["free", "team", "pro", "enterprise"]),
|
|
cardPrefix: z.string(),
|
|
});
|
|
|
|
// ─── workspace.update ────────────────────────────────────────
|
|
export const workspaceUpdateResponseSchema = z.object({
|
|
publicId: z.string(),
|
|
name: z.string(),
|
|
slug: z.string(),
|
|
description: z.string().nullable(),
|
|
plan: z.enum(["free", "team", "pro", "enterprise"]),
|
|
showEmailsToMembers: z.boolean().nullable(),
|
|
weekStartDay: z.number().nullable(),
|
|
});
|
|
|
|
// ─── workspace.delete ────────────────────────────────────────
|
|
export const workspaceDeleteResponseSchema = z.object({
|
|
success: z.boolean(),
|
|
});
|