diff options
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 |
