aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/types/bookmarks.ts27
1 files changed, 26 insertions, 1 deletions
diff --git a/packages/shared/types/bookmarks.ts b/packages/shared/types/bookmarks.ts
index 1d8052f4..a02a4b29 100644
--- a/packages/shared/types/bookmarks.ts
+++ b/packages/shared/types/bookmarks.ts
@@ -114,7 +114,32 @@ const zBookmarkTypeAssetSchema = zBareBookmarkSchema.merge(
export type ZBookmarkTypeAsset = z.infer<typeof zBookmarkTypeAssetSchema>;
// POST /v1/bookmarks
-export const zNewBookmarkRequestSchema = zBookmarkContentSchema;
+export const zNewBookmarkRequestSchema = z
+ .object({
+ title: z.string().max(MAX_TITLE_LENGTH).nullish(),
+ archived: z.boolean().optional(),
+ favourited: z.boolean().optional(),
+ note: z.string().optional(),
+ summary: z.string().optional(),
+ createdAt: z.date().optional(),
+ })
+ .and(
+ z.discriminatedUnion("type", [
+ z.object({ type: z.literal(BookmarkTypes.LINK), url: z.string().url() }),
+ z.object({
+ type: z.literal(BookmarkTypes.TEXT),
+ text: z.string(),
+ sourceUrl: z.string().optional(),
+ }),
+ z.object({
+ type: z.literal(BookmarkTypes.ASSET),
+ assetType: z.enum(["image", "pdf"]),
+ assetId: z.string(),
+ fileName: z.string().optional(),
+ sourceUrl: z.string().optional(),
+ }),
+ ]),
+ );
export type ZNewBookmarkRequest = z.infer<typeof zNewBookmarkRequestSchema>;
// GET /v1/bookmarks