diff --git a/packages/rocketchat-api/server/v1/channels.js b/packages/rocketchat-api/server/v1/channels.js index 668958d0f1f..15a6c3d0eaf 100644 --- a/packages/rocketchat-api/server/v1/channels.js +++ b/packages/rocketchat-api/server/v1/channels.js @@ -417,6 +417,28 @@ RocketChat.API.v1.addRoute('channels.list.joined', { authRequired: true }, { } }); +RocketChat.API.v1.addRoute('channels.members', { authRequired: true }, { + get() { + const findResult = findChannelByIdOrName({ params: this.requestParams(), checkedArchived: false }); + + const { offset, count } = this.getPaginationItems(); + const { sort } = this.parseJsonQuery(); + + const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult.usernames), { + sort: sort ? sort : -1, + skip: offset, + limit: count + }); + + return RocketChat.API.v1.success({ + members, + count: members.length, + offset, + total: findResult.usernames.length + }); + } +}); + RocketChat.API.v1.addRoute('channels.messages', { authRequired: true }, { get() { const findResult = findChannelByIdOrName({ params: this.requestParams(), checkedArchived: false }); diff --git a/packages/rocketchat-api/server/v1/groups.js b/packages/rocketchat-api/server/v1/groups.js index 84fc53bf010..b9c32b1ba7f 100644 --- a/packages/rocketchat-api/server/v1/groups.js +++ b/packages/rocketchat-api/server/v1/groups.js @@ -335,6 +335,27 @@ RocketChat.API.v1.addRoute('groups.list', { authRequired: true }, { } }); +RocketChat.API.v1.addRoute('groups.members', { authRequired: true }, { + get() { + const findResult = findPrivateGroupByIdOrName({ params: this.requestParams(), userId: this.userId }); + const { offset, count } = this.getPaginationItems(); + const { sort } = this.parseJsonQuery(); + + const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult._room.usernames), { + sort: sort ? sort : -1, + skip: offset, + limit: count + }); + + return RocketChat.API.v1.success({ + members, + count: members.length, + offset, + total: findResult._room.usernames + }); + } +}); + RocketChat.API.v1.addRoute('groups.messages', { authRequired: true }, { get() { const findResult = findPrivateGroupByIdOrName({ params: this.requestParams(), userId: this.userId }); diff --git a/packages/rocketchat-api/server/v1/im.js b/packages/rocketchat-api/server/v1/im.js index 20bc1bc68bd..5ffb999670f 100644 --- a/packages/rocketchat-api/server/v1/im.js +++ b/packages/rocketchat-api/server/v1/im.js @@ -121,6 +121,28 @@ RocketChat.API.v1.addRoute(['dm.history', 'im.history'], { authRequired: true }, } }); +RocketChat.API.v1.addRoute(['dm.members', 'im.members'], { authRequired: true }, { + get() { + const findResult = findDirectMessageRoom(this.requestParams(), this.user); + + const { offset, count } = this.getPaginationItems(); + const { sort } = this.parseJsonQuery(); + + const members = RocketChat.models.Rooms.processQueryOptionsOnResult(Array.from(findResult.room.usernames), { + sort: sort ? sort : -1, + skip: offset, + limit: count + }); + + return RocketChat.API.v1.success({ + members, + count: members.length, + offset, + total: findResult.room.usernames + }); + } +}); + RocketChat.API.v1.addRoute(['dm.messages', 'im.messages'], { authRequired: true }, { get() { const findResult = findDirectMessageRoom(this.requestParams(), this.user);