diff --git a/.changeset/four-ads-occur.md b/.changeset/four-ads-occur.md new file mode 100644 index 0000000..a09d647 --- /dev/null +++ b/.changeset/four-ads-occur.md @@ -0,0 +1,5 @@ +--- +"server-sdk-kotlin": minor +--- + +RoomService: MoveParticipant API diff --git a/protocol b/protocol index 18e676b..3ee2664 160000 --- a/protocol +++ b/protocol @@ -1 +1 @@ -Subproject commit 18e676b49301233cbbfdd8f7990fd3a52814e0c6 +Subproject commit 3ee2664416147b7ca8086fd1aa818164d2673b0b diff --git a/src/main/kotlin/io/livekit/server/RoomService.kt b/src/main/kotlin/io/livekit/server/RoomService.kt index fa07e8f..7144e52 100644 --- a/src/main/kotlin/io/livekit/server/RoomService.kt +++ b/src/main/kotlin/io/livekit/server/RoomService.kt @@ -72,6 +72,10 @@ interface RoomService { @POST("/twirp/livekit.RoomService/ForwardParticipant") fun forwardParticipant(@Body request: LivekitRoom.ForwardParticipantRequest, @Header("Authorization") authorization: String): Call + @Headers("Content-Type: application/protobuf") + @POST("/twirp/livekit.RoomService/MoveParticipant") + fun moveParticipant(@Body request: LivekitRoom.MoveParticipantRequest, @Header("Authorization") authorization: String): Call + @Headers("Content-Type: application/protobuf") @POST("/twirp/livekit.RoomService/MutePublishedTrack") fun mutePublishedTrack( diff --git a/src/main/kotlin/io/livekit/server/RoomServiceClient.kt b/src/main/kotlin/io/livekit/server/RoomServiceClient.kt index b776441..e2bf183 100644 --- a/src/main/kotlin/io/livekit/server/RoomServiceClient.kt +++ b/src/main/kotlin/io/livekit/server/RoomServiceClient.kt @@ -211,6 +211,26 @@ class RoomServiceClient( return service.forwardParticipant(request, credentials) } + /** + * Move a participant from one room to another room. + * @param roomName + * @param identity + * @param destinationRoomName + */ + fun moveParticipant(roomName: String, identity: String, destinationRoomName: String): Call { + val request = LivekitRoom.MoveParticipantRequest.newBuilder() + .setRoom(roomName) + .setIdentity(identity) + .setDestinationRoom(destinationRoomName) + .build() + val credentials = authHeader( + RoomAdmin(true), + RoomName(roomName), + DestinationRoomName(destinationRoomName), + ) + return service.moveParticipant(request, credentials) + } + /** * Mutes a track that the participant has published. * @param roomName