Files
kan/packages/api/src/schemas/common.ts
2026-04-20 22:35:39 +01:00

41 lines
1001 B
TypeScript

import { z } from "zod";
// Shared label schema used across board and card responses
export const labelSchema = z.object({
publicId: z.string(),
name: z.string(),
colourCode: z.string().nullable(),
});
// Shared checklist item schema
export const checklistItemResponseSchema = z.object({
publicId: z.string(),
title: z.string(),
completed: z.boolean(),
index: z.number(),
});
// Shared checklist schema with items
export const checklistResponseSchema = z.object({
publicId: z.string(),
name: z.string(),
index: z.number(),
items: z.array(checklistItemResponseSchema),
});
// Shared user sub-object (used inside member/workspace responses)
export const userSchema = z.object({
id: z.string().nullable(),
name: z.string().nullable(),
email: z.string(),
image: z.string().nullable(),
});
// Workspace member sub-object
export const workspaceMemberSchema = z.object({
publicId: z.string(),
email: z.string(),
status: z.string(),
user: userSchema.nullable(),
});