aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-11-17 02:39:06 +0000
committerMohamed Bassem <me@mbassem.com>2024-11-17 02:39:33 +0000
commit82cd3bb8fa2814b7e27b610682cd04d6f471ac2d (patch)
tree26b06ca73f3a4bf754953475dca26cacefe10b35 /packages/shared
parent64e759a82349a85c4da55dbb47bb4b939dfeb322 (diff)
downloadkarakeep-82cd3bb8fa2814b7e27b610682cd04d6f471ac2d.tar.zst
feature: Allow setting bookmark metadata during creation
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