41 lines
1001 B
TypeScript
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(),
|
|
});
|