// Adding a bookmark to a new folder
let bookmark = try await feed.addBookmark(activityId: "activity_123")
// Adding to an existing folder
let bookmarkWithFolder = try await feed.addBookmark(
activityId: "activity_123",
request: .init(folderId: "folder_456")
)
// Update a bookmark (without a folder initially) - add custom data and move it to a new folder
let updatedBookmark = try await feed.updateBookmark(
activityId: "activity_123",
request: .init(
custom: ["color": "blue"],
newFolder: .init(
custom: ["icon": "π"],
name: "New folder name"
)
)
)
// Update a bookmark - move it from one existing folder to another existing folder
let movedBookmark = try await feed.updateBookmark(
activityId: "activity_123",
request: .init(
folderId: "folder_456",
newFolderId: "folder_789"
)
)
Activity Feeds V3 is in closed alpha β do not use it in production (just yet).
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>',
});
// Adding a bookmark to a new folder
const bookmark = await client.feeds.addBookmark({
activity_id: 'activity_123',
user_id: '<user_id>',
});
// Adding to an existing folder
const bookmarkWithFolder = await client.feeds.addBookmark({
activity_id: 'activity_123',
folder_id: 'folder_456',
user_id: '<user_id>',
});
// Update a bookmark (without a folder initially) - add custom data and move it to a new folder
const updatedBookmark = await client.feeds.updateBookmark({
activity_id: 'activity_123',
folder_id: '<old folder id>'
new_folder: {
name: 'New folder name',
custom: {
icon: 'π'
}
},
custom: {
color: 'blue',
},
user_id: '<user_id>',
});
// Update a bookmark - move it from one existing folder to another existing folder
const movedBookmark = await client.feeds.updateBookmark({
activity_id: 'activity_123',
folder_id: '<old folder id>',
new_folder_id: '<new folder id>',
user_id: '<user_id>',
});
Removing Bookmarks
// Removing a bookmark
try await feed.removeBookmark(activityId: "activity_123", folderId: "folder_456")
// When you read a feed we include the bookmark
try await feed.getOrCreate()
print(feed.state.activities[0].ownBookmarks)
// 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);
// Removing a bookmark
await serverClient.feeds.deleteBookmark({
activity_id: activityId,
user_id: testUser2.id,
});
// When you read a feed we include the bookmark
const response = await feed.getOrCreate({ user_id: "sara" });
console.log(results.activities[0].own_bookmarks);
console.log(results.activities[0].bookmark_count);
Querying Bookmarks
// Query bookmarks
let query = BookmarksQuery(limit: 5)
let bookmarkList = client.bookmarkList(for: query)
let page1 = try await bookmarkList.get()
// Get next page
let page2 = try await bookmarkList.queryMoreBookmarks(limit: 3)
// Query by activity ID
let activityBookmarkList = client.bookmarkList(
for: .init(
filter: .equal(.activityId, "activity_123")
)
)
let activityBookmarks = try await activityBookmarkList.get()
// Query by folder ID
let folderBookmarkList = client.bookmarkList(
for: .init(
filter: .equal(.folderId, "folder_456")
)
)
let folderBookmarks = try await folderBookmarkList.get()
// 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",
},
});
// Query bookmarks
const firstPage = await client.feeds.queryBookmarks({
filter: {
user_id: "<user id>",
},
limit: 2,
});
// Get next page
const secondPage = await client.feeds.queryBookmarks({
filter: {
user_id: "<user id>",
},
limit: 2,
next: firstPage.next,
});
// Query by activity ID
const response = await client.feeds.queryBookmarks({
filter: {
user_id: "<user id>",
activity_id: "activity_123",
},
});
// Query by folder ID
const response = await client.feeds.queryBookmarks({
filter: {
user_id: "<user id>",
folder_id: "folder_456",
},
});
Querying Bookmark Folders
// Query bookmark folders
let query = BookmarkFoldersQuery(limit: 5)
let bookmarkFolderList = client.bookmarkFolderList(for: query)
let page1 = try await bookmarkFolderList.get()
// Get next page
let page2 = try await bookmarkFolderList.queryMoreBookmarkFolders(limit: 3)
// Query by folder name (partial matching)
let projectFolderList = client.bookmarkFolderList(
for: .init(
filter: .contains(.folderName, "project")
)
)
let projectFolders = try await projectFolderList.get()
// 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,
});
// Query bookmark folders
const firstPage = await client.feeds.queryBookmarkFolders({
filter: {
user_id: '<user id>'
},
limit: 2
});
// Get next page
const secondPage = await client.feeds.queryBookmarkFolders({
filter: {
user_id: '<user id>'
}
limit: 2,
next: firstPage.next,
});
const response = await client.feeds.queryBookmarkFolders({
filter: {
user_id: '<user id>',
folder_name: {
$contains: 'project'
}
}
limit: 2,
next: firstPage.next,
});