diff options
| author | Mohamed Bassem <me@mbassem.com> | 2024-11-17 02:39:06 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-11-17 02:39:33 +0000 |
| commit | 82cd3bb8fa2814b7e27b610682cd04d6f471ac2d (patch) | |
| tree | 26b06ca73f3a4bf754953475dca26cacefe10b35 /packages/shared | |
| parent | 64e759a82349a85c4da55dbb47bb4b939dfeb322 (diff) | |
| download | karakeep-82cd3bb8fa2814b7e27b610682cd04d6f471ac2d.tar.zst | |
feature: Allow setting bookmark metadata during creation
Diffstat (limited to 'packages/shared')
| -rw-r--r-- | packages/shared/types/bookmarks.ts | 27 |
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 |
