diff --git a/packages/client/docusaurus/docs/javascript/02-guides/07-query-call-members.mdx b/packages/client/docusaurus/docs/javascript/02-guides/07-query-call-members.mdx
new file mode 100644
index 0000000000..e7ecb00c59
--- /dev/null
+++ b/packages/client/docusaurus/docs/javascript/02-guides/07-query-call-members.mdx
@@ -0,0 +1,47 @@
+---
+id: querying-call-members
+title: Querying Call Members
+description: How to query call members
+---
+
+import FilterConditions from '../../../shared/_filter-operators.mdx';
+import CallMemberFilters from '../../../shared/video/_call-member-filters.mdx';
+import CallMemberSort from '../../../shared/video/_call-member-sort-fields.mdx';
+
+Even though when you create or join a call you get a list of call members, for larger calls this list won't contain all members. To get the complete list of call members the Stream API allows you to query, filter and sort members of a call using a paginated list.
+
+## Examples
+
+Below are a few examples of how to use this API:
+
+```typescript
+const result = await call.queryMembers();
+
+// sorting and pagination
+const queryMembersReq = {
+ sort: [{ field: 'user_id', direction: 1 }],
+ limit: 2,
+};
+const result = await call.queryMembers(queryMembersReq);
+
+// loading the next page
+const result = await call.queryMembers({
+ ...queryMembersReq,
+ next: result.next,
+});
+
+// filtering
+const result = await call.queryMembers({
+ filter_conditions: { role: { $eq: 'admin' } },
+});
+```
+
+## Sort options
+
+
+
+## Filter options
+
+
+
+
diff --git a/packages/client/src/__tests__/Call.test.ts b/packages/client/src/__tests__/Call.test.ts
index a16243c48d..f6f77c4c58 100644
--- a/packages/client/src/__tests__/Call.test.ts
+++ b/packages/client/src/__tests__/Call.test.ts
@@ -210,6 +210,46 @@ describe('state updates in reponse to coordinator API', () => {
await call.leave();
});
+ it('should query call members', async () => {
+ await call.getOrCreate({
+ data: {
+ members: [
+ { user_id: 'sara', role: 'admin' },
+ { user_id: 'jane' },
+ { user_id: 'jack' },
+ ],
+ },
+ });
+
+ // default sorting
+ let result = await call.queryMembers();
+
+ expect(result.members.length).toBe(3);
+
+ // sorting and pagination
+ const queryMembersReq = {
+ sort: [{ field: 'user_id', direction: 1 }],
+ limit: 2,
+ };
+ result = await call.queryMembers(queryMembersReq);
+
+ expect(result.members.length).toBe(2);
+ expect(result.members[0].user_id).toBe('jack');
+ expect(result.members[1].user_id).toBe('jane');
+
+ // loading next page
+ result = await call.queryMembers({ ...queryMembersReq, next: result.next });
+
+ expect(result.members.length).toBe(1);
+
+ result = await call.queryMembers({
+ filter_conditions: { role: { $eq: 'admin' } },
+ });
+
+ expect(result.members.length).toBe(1);
+ expect(result.members[0].user_id).toBe('sara');
+ });
+
afterEach(async () => {
await serverClient.video.call(call.type, call.id).delete({ hard: true });
});
diff --git a/packages/react-native-sdk/docusaurus/docs/reactnative/03-core/07-query-call-members.mdx b/packages/react-native-sdk/docusaurus/docs/reactnative/03-core/07-query-call-members.mdx
new file mode 100644
index 0000000000..e7ecb00c59
--- /dev/null
+++ b/packages/react-native-sdk/docusaurus/docs/reactnative/03-core/07-query-call-members.mdx
@@ -0,0 +1,47 @@
+---
+id: querying-call-members
+title: Querying Call Members
+description: How to query call members
+---
+
+import FilterConditions from '../../../shared/_filter-operators.mdx';
+import CallMemberFilters from '../../../shared/video/_call-member-filters.mdx';
+import CallMemberSort from '../../../shared/video/_call-member-sort-fields.mdx';
+
+Even though when you create or join a call you get a list of call members, for larger calls this list won't contain all members. To get the complete list of call members the Stream API allows you to query, filter and sort members of a call using a paginated list.
+
+## Examples
+
+Below are a few examples of how to use this API:
+
+```typescript
+const result = await call.queryMembers();
+
+// sorting and pagination
+const queryMembersReq = {
+ sort: [{ field: 'user_id', direction: 1 }],
+ limit: 2,
+};
+const result = await call.queryMembers(queryMembersReq);
+
+// loading the next page
+const result = await call.queryMembers({
+ ...queryMembersReq,
+ next: result.next,
+});
+
+// filtering
+const result = await call.queryMembers({
+ filter_conditions: { role: { $eq: 'admin' } },
+});
+```
+
+## Sort options
+
+
+
+## Filter options
+
+
+
+
diff --git a/packages/react-native-sdk/docusaurus/docs/reactnative/03-core/07-keeping-call-alive.mdx b/packages/react-native-sdk/docusaurus/docs/reactnative/03-core/08-keeping-call-alive.mdx
similarity index 100%
rename from packages/react-native-sdk/docusaurus/docs/reactnative/03-core/07-keeping-call-alive.mdx
rename to packages/react-native-sdk/docusaurus/docs/reactnative/03-core/08-keeping-call-alive.mdx
diff --git a/packages/react-sdk/docusaurus/docs/React/02-guides/07-query-call-members.mdx b/packages/react-sdk/docusaurus/docs/React/02-guides/07-query-call-members.mdx
new file mode 100644
index 0000000000..e7ecb00c59
--- /dev/null
+++ b/packages/react-sdk/docusaurus/docs/React/02-guides/07-query-call-members.mdx
@@ -0,0 +1,47 @@
+---
+id: querying-call-members
+title: Querying Call Members
+description: How to query call members
+---
+
+import FilterConditions from '../../../shared/_filter-operators.mdx';
+import CallMemberFilters from '../../../shared/video/_call-member-filters.mdx';
+import CallMemberSort from '../../../shared/video/_call-member-sort-fields.mdx';
+
+Even though when you create or join a call you get a list of call members, for larger calls this list won't contain all members. To get the complete list of call members the Stream API allows you to query, filter and sort members of a call using a paginated list.
+
+## Examples
+
+Below are a few examples of how to use this API:
+
+```typescript
+const result = await call.queryMembers();
+
+// sorting and pagination
+const queryMembersReq = {
+ sort: [{ field: 'user_id', direction: 1 }],
+ limit: 2,
+};
+const result = await call.queryMembers(queryMembersReq);
+
+// loading the next page
+const result = await call.queryMembers({
+ ...queryMembersReq,
+ next: result.next,
+});
+
+// filtering
+const result = await call.queryMembers({
+ filter_conditions: { role: { $eq: 'admin' } },
+});
+```
+
+## Sort options
+
+
+
+## Filter options
+
+
+
+