Activity Feeds v3 is in beta — try it out!

Search for Feeds

The query feeds endpoint lets you search for feeds.

Examples

Querying My Feeds

// First page query
Map<String, Object> filter = new HashMap<>();
filter.put("created_by_id", "john");

QueryFeedsRequest firstPageRequest = QueryFeedsRequest.builder()
    .filter(filter)
    .limit(10)
    .sort(List.of(
        SortParamRequest.builder()
            .field("created_at")
            .direction(-1)
            .build()
    ))
    .build();

QueryFeedsResponse firstPage = feeds.queryFeeds(firstPageRequest).execute().getData();

// Second page using next cursor from first page
QueryFeedsRequest secondPageRequest = QueryFeedsRequest.builder()
    .filter(filter)
    .limit(10)
    .sort(List.of(
        SortParamRequest.builder()
            .field("created_at")
            .direction(-1)
            .build()
    ))
    .next(firstPage.getNext())
    .build();

QueryFeedsResponse secondPage = feeds.queryFeeds(secondPageRequest).execute().getData();

Querying Feeds Where I Am a Member

Map<String, Object> filter = new HashMap<>();
Map<String, Object> membersFilter = new HashMap<>();
membersFilter.put("$in", List.of("john"));
filter.put("members", membersFilter);

QueryFeedsRequest request = QueryFeedsRequest.builder()
    .filter(filter)
    .build();

QueryFeedsResponse response = feeds.queryFeeds(request).execute().getData();

Querying feeds by name or description

// Search public feeds by name
Map<String, Object> filter1 = new HashMap<>();
filter1.put("visibility", Map.of("$eq", "public"));
filter1.put("name", Map.of("$q", "Sports"));

QueryFeedsRequest request1 = QueryFeedsRequest.builder()
    .filter(filter1)
    .build();

QueryFeedsResponse response1 = feeds.queryFeeds(request1).execute().getData();

// Search public feeds by description
Map<String, Object> filter2 = new HashMap<>();
filter2.put("visibility", "public");
filter2.put("description", Map.of("$q", "tech"));

QueryFeedsRequest request2 = QueryFeedsRequest.builder()
    .filter(filter2)
    .build();

QueryFeedsResponse response2 = feeds.queryFeeds(request2).execute().getData();

Querying feeds by creator name

// Search public feeds created by users with 'Thompson' in their name
Map<String, Object> filter = new HashMap<>();
filter.put("visibility", "public");
filter.put("created_by.name", Map.of("$q", "Thompson"));

QueryFeedsRequest request = QueryFeedsRequest.builder()
    .filter(filter)
    .build();

QueryFeedsResponse response = feeds.queryFeeds(request).execute().getData();

A complex example

Search for user feeds where text matches the feed’s name, description or creator’s name:

Map<String, Object> filter = new HashMap<>();
filter.put("group_id", "user");
filter.put("$or", List.of(
    Map.of("name", Map.of("$q", searchQuery)),
    Map.of("description", Map.of("$q", searchQuery)),
    Map.of("created_by.name", Map.of("$q", searchQuery))
));

QueryFeedsRequest request = QueryFeedsRequest.builder()
    .filter(filter)
    .build();

QueryFeedsResponse response = feeds.queryFeeds(request).execute().getData();

Feeds Queryable Built-in Fields

nametypedescriptionsupported operationsexample
idstring or list of stringsThe ID of the feed$in, $eq{ id: { $in: [ 'abc', 'xyz' ] } }
group_idstring or list of stringsThe ID of the group this feed belongs to$in, $eq{ group_id: { $in: [ 'abc', 'xyz' ] } }
feedstring or list of stringsThe fully qualified feed ID (group_id:id)$in, $eq{ fid: { $in: [ 'abc', 'xyz' ] } }
visibilitystring or list of stringsThe visibility setting of the feed$in, $eq{ visibility: { $eq: 'public' } }
created_by_idstring or list of stringsThe ID of the user who created the feed$in, $eq{ created_by_id: { $in: [ 'abc', 'xyz' ] } }
created_by.namestringThe name of the user who created the feed$eq, $q, $autocomplete{ 'created_by.name': { $autocomplete: 'Frank' } }
namestringThe name of the feed$eq, $q, $autocomplete{ name: { $q: 'Sports' } }
descriptionstringThe description of the feed$eq, $q, $autocomplete{ description: { $autocomplete: 'tech' } }
member_countnumberThe number of members in this feed$eq, $ne, $gt, $lt, $gte, $lte{ member_count: { $gt: 100 } }
memberslist of stringsThe list of members in this feed$in{ members: { $in: [ 'bob', 'alice' ] } }
following_countnumberThe number of feeds this feed follows$eq, $ne, $gt, $lt, $gte, $lte{ following_count: { $gt: 100 } }
following_feedslist of stringsThe list of feeds this feed follows$in{ following_feeds: { $in: [ 'feed1', 'feed2' ] } }
follower_countnumberThe number of followers of this feed$eq, $ne, $gt, $lt, $gte, $lte{ follower_count: { $gt: 100 } }
created_atstring, RFC3339 timestampThe time the feed was created$eq, $gt, $lt, $gte, $lte{ created_at: { $gte: '2023-12-04T09:30:20.45Z' } }
updated_atstring, RFC3339 timestampThe time the feed was updated$eq, $gt, $lt, $gte, $lte{ updated_at: { $gte: '2023-12-04T09:30:20.45Z' } }
filter_tagslist of stringsTags for filtering the feed$eq, $contains, $in{ filter_tags: { $in: [ 'sports', 'news' ] } }

Filter expressions can be combined using $or and $and operators as well.

Feeds can be sorted by created_at, updated_at, member_count, follower_count, and following_count.

Be sure to reach out to support if you need additional query feed capabilities.

© Getstream.io, Inc. All Rights Reserved.