feat: added schemas for openapi (#452)

This commit is contained in:
Morfixx
2026-04-18 13:29:35 -07:00
committed by GitHub
parent 6056167063
commit ae4bc77407
15 changed files with 606 additions and 68 deletions

View File

@@ -0,0 +1,213 @@
import { z } from "zod";
import {
checklistResponseSchema,
labelSchema,
workspaceMemberSchema,
} from "./common";
// ─── card.create ─────────────────────────────────────────────
export const cardCreateResponseSchema = z.object({
publicId: z.string(),
});
// ─── card.update ─────────────────────────────────────────────
export const cardUpdateResponseSchema = z.object({
publicId: z.string(),
title: z.string(),
description: z.string().nullable(),
dueDate: z.date().nullable(),
});
// ─── Comment responses ───────────────────────────────────────
export const commentResponseSchema = z.object({
publicId: z.string(),
comment: z.string(),
});
export const commentDeleteResponseSchema = z.object({
publicId: z.string(),
});
// ─── card.byId ───────────────────────────────────────────────
const cardMemberSchema = z.object({
publicId: z.string(),
email: z.string(),
user: z
.object({
name: z.string().nullable(),
})
.nullable(),
});
export const cardDetailSchema = z.object({
publicId: z.string(),
title: z.string(),
description: z.string().nullable(),
dueDate: z.date().nullable(),
createdBy: z.string().nullable(),
labels: z.array(labelSchema),
attachments: z.array(
z.object({
publicId: z.string(),
contentType: z.string(),
s3Key: z.string(),
originalFilename: z.string().nullable(),
size: z.number().nullable(),
url: z.string().nullable(),
}),
),
checklists: z.array(checklistResponseSchema),
list: z.object({
publicId: z.string(),
name: z.string(),
board: z.object({
publicId: z.string(),
name: z.string(),
labels: z.array(labelSchema),
lists: z.array(
z.object({
publicId: z.string(),
name: z.string(),
}),
),
workspace: z.object({
publicId: z.string(),
members: z.array(workspaceMemberSchema),
}),
}),
}),
members: z.array(cardMemberSchema),
activities: z.array(
z.object({
publicId: z.string(),
type: z.string(),
createdAt: z.date(),
fromIndex: z.number().nullable(),
toIndex: z.number().nullable(),
fromTitle: z.string().nullable(),
toTitle: z.string().nullable(),
fromDescription: z.string().nullable(),
toDescription: z.string().nullable(),
fromDueDate: z.date().nullable(),
toDueDate: z.date().nullable(),
fromList: z
.object({
publicId: z.string(),
name: z.string(),
index: z.number(),
})
.nullable(),
toList: z
.object({
publicId: z.string(),
name: z.string(),
index: z.number(),
})
.nullable(),
label: z
.object({
publicId: z.string(),
name: z.string(),
})
.nullable(),
member: z
.object({
publicId: z.string(),
user: z
.object({
name: z.string().nullable(),
email: z.string(),
})
.nullable(),
})
.nullable(),
user: z
.object({
name: z.string().nullable(),
email: z.string(),
})
.nullable(),
comment: z
.object({
publicId: z.string(),
comment: z.string(),
createdBy: z.string().nullable(),
updatedAt: z.date().nullable(),
deletedAt: z.date().nullable(),
})
.nullable(),
}),
),
});
// ─── card.getActivities ──────────────────────────────────────
export const activityItemSchema = z.object({
publicId: z.string(),
type: z.string(),
createdAt: z.date(),
fromIndex: z.number().nullable(),
toIndex: z.number().nullable(),
fromTitle: z.string().nullable(),
toTitle: z.string().nullable(),
fromDescription: z.string().nullable(),
toDescription: z.string().nullable(),
fromDueDate: z.date().nullable(),
toDueDate: z.date().nullable(),
fromList: z
.object({
publicId: z.string(),
name: z.string(),
index: z.number(),
})
.nullable(),
toList: z
.object({
publicId: z.string(),
name: z.string(),
index: z.number(),
})
.nullable(),
label: z
.object({
publicId: z.string(),
name: z.string(),
})
.nullable(),
member: z
.object({
publicId: z.string(),
user: z
.object({
name: z.string().nullable(),
email: z.string(),
image: z.string().nullable(),
})
.nullable(),
})
.nullable(),
user: z
.object({
name: z.string().nullable(),
email: z.string(),
image: z.string().nullable(),
})
.nullable(),
comment: z
.object({
publicId: z.string(),
comment: z.string(),
createdBy: z.string().nullable(),
updatedAt: z.date().nullable(),
deletedAt: z.date().nullable(),
})
.nullable(),
attachment: z
.object({
publicId: z.string(),
filename: z.string(),
originalFilename: z.string().nullable(),
})
.nullable(),
});