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
$response = $feedsClient->addBookmark(
    'activity_123',
    new GeneratedModels\AddBookmarkRequest(
        userID: 'user_123',
        newFolder: new GeneratedModels\AddFolderRequest(name: 'New folder name')
    )
);

// Adding to an existing folder
$response = $feedsClient->addBookmark(
    'activity_123',
    new GeneratedModels\AddBookmarkRequest(
        userID: 'user_123',
        folderID: 'folder_456'
    )
);

// Update a bookmark (without a folder initially) - add custom data and move it to a new folder
$response = $feedsClient->updateBookmark(
    'activity_123',
    new GeneratedModels\UpdateBookmarkRequest(
        userID: 'user_123',
        custom: (object)['color' => 'blue'],
        newFolder: new GeneratedModels\AddFolderRequest(
            name: 'New folder name',
            custom: (object)['icon' => 'πŸ“']
        )
    )
);

// Update a bookmark - move it from one existing folder to another existing folder
$response = $feedsClient->updateBookmark(
    'activity_123',
    new GeneratedModels\UpdateBookmarkRequest(
        userID: 'user_123',
        folderID: 'folder_456',
        newFolderID: 'folder_789'
    )
);

Removing Bookmarks

// Removing a bookmark
$response = $feedsClient->deleteBookmark(
    'activity_123',
    'folder_456',
    'user_123'
);

// When you read a feed we include the bookmark
$feedResponse = $feedsClient->getOrCreateFeed('user', 'user_123', new GeneratedModels\GetOrCreateFeedRequest(
  userID: 'user_123'
));
$activities = $feedResponse->getData()->activities;
echo $activities[0]['own_bookmarks'];
echo $activities[0]['bookmark_count'];

Querying Bookmarks

// Query bookmarks
$firstPage = $feedsClient->queryBookmarks(
    new GeneratedModels\QueryBookmarksRequest(
        limit: 2,
        filter: (object)['user_id' => 'user_123']
    )
);

// Get next page
$secondPage = $feedsClient->queryBookmarks(
    new GeneratedModels\QueryBookmarksRequest(
        limit: 2,
        next: $firstPage->getData()->next,
        filter: (object)['user_id' => 'user_123']
    )
);

// Query by activity ID
$response = $feedsClient->queryBookmarks(
    new GeneratedModels\QueryBookmarksRequest(
        filter: (object)[
            'user_id' => 'user_123',
            'activity_id' => 'activity_123'
        ]
    )
);

// Query by folder ID
$response = $feedsClient->queryBookmarks(
    new GeneratedModels\QueryBookmarksRequest(
        filter: (object)[
            'user_id' => 'user_123',
            '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
$firstPage = $feedsClient->queryBookmarkFolders(
    new GeneratedModels\QueryBookmarkFoldersRequest(
        limit: 2,
        filter: (object)['user_id' => 'user_123']
    )
);

// Get next page
$secondPage = $feedsClient->queryBookmarkFolders(
    new GeneratedModels\QueryBookmarkFoldersRequest(
        limit: 2,
        next: $firstPage->getData()->next,
        filter: (object)['user_id' => 'user_123']
    )
);

// Query by folder name (partial matching)
$response = $feedsClient->queryBookmarkFolders(
    new GeneratedModels\QueryBookmarkFoldersRequest(
        filter: (object)[
            'user_id' => 'user_123',
            'folder_name' => [
                '$contains' => 'project'
            ]
        ],
        limit: 2
    )
);

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.