Activity Feeds v3 is in beta β€” try it out!

Bookmarks

Overview

The API includes built-in support for bookmarking activities. Here’s a quick example of how to use the bookmark API.

Adding Bookmarks

// Adding a bookmark to a new folder const bookmark = await client.addBookmark({  activity_id: "activity_123", });  // Adding to an existing folder const bookmarkWithFolder = await client.addBookmark({  activity_id: "activity_123",  folder_id: "folder_456", });  // Update a bookmark (without a folder initially) - add custom data and move it to a new folder const updatedBookmark = await client.updateBookmark({  activity_id: "activity_123",  folder_id: "<old folder id>",  new_folder: {  name: "New folder name",  custom: {  icon: "πŸ“‚",  },  },  custom: {  color: "blue",  }, });  // Update a bookmark - move it from one existing folder to another existing folder const movedBookmark = await client.updateBookmark({  activity_id: "activity_123",  folder_id: "<old folder id>",  new_folder_id: "<new folder id>", });

Removing Bookmarks

// Removing a bookmark await client.deleteBookmark({  activity_id: activityId, });  // When you read a feed we include the bookmark const response = await feed.getOrCreate({ watch: true }); console.log(feed.state.getLatestValue().activities?.[0].own_bookmarks); console.log(feed.state.getLatestValue().activities?.[0].bookmark_count);

Querying Bookmarks

// Query bookmarks const firstPage = await client.queryBookmarks({  limit: 2, });  // Get next page const secondPage = await client.queryBookmarks({  limit: 2,  next: firstPage.next, });  // Query by activity ID const response = await client.queryBookmarks({  filter: {  activity_id: "activity_123",  }, });  // Query by folder ID const response = await client.queryBookmarks({  filter: {  folder_id: "folder_456",  }, });

Bookmarks Queryable Built-In Fields

nametypedescriptionsupported operationsexample
user_idstring or list of stringsThe ID of the user who owns the bookmark$in, $eq{ user_id: { $eq: 'user_123' } }
activity_idstring or list of stringsThe ID of the activity that was bookmarked$in, $eq{ activity_id: { $eq: 'activity_123' } }
folder_idstring or list of stringsThe ID of the folder containing the bookmark$eq, $in, $exists{ folder_id: { $exists: true } }
created_atstring, must be formatted as an RFC3339 timestampThe time the bookmark was created$eq, $gt, $gte, $lt, $lte{ created_at: { $gte: '2023-12-04T09:30:20.45Z' } }
updated_atstring, must be formatted as an RFC3339 timestampThe time the bookmark was last updated$eq, $gt, $gte, $lt, $lte{ updated_at: { $gte: '2023-12-04T09:30:20.45Z' } }

Querying Bookmark Folders

// Query bookmark folders const firstPage = await client.queryBookmarkFolders({  limit: 2, });  // Get next page const secondPage = await client.queryBookmarkFolders({  limit: 2,  next: firstPage.next, });  const response = await client.queryBookmarkFolders({  filter: {  folder_name: {  $contains: "project",  },  },  limit: 2,  next: firstPage.next, });

Bookmark Folders Queryable Built-In Fields

nametypedescriptionsupported operationsexample
user_idstring or list of stringsThe ID of the user who owns the folder$in, $eq{ user_id: { $eq: 'user_123' } }
folder_namestring or list of stringsThe name of the bookmark folder$eq, $in, $contains{ folder_name: { $contains: 'work' } }
created_atstring, must be formatted as an RFC3339 timestampThe time the folder was created$eq, $gt, $gte, $lt, $lte{ created_at: { $gte: '2023-12-04T09:30:20.45Z' } }
updated_atstring, must be formatted as an RFC3339 timestampThe time the folder was last updated$eq, $gt, $gte, $lt, $lte{ updated_at: { $gte: '2023-12-04T09:30:20.45Z' } }
Β© Getstream.io, Inc. All Rights Reserved.