syntax = "proto3";package livekit;option go_package = "github.com/livekit/protocol/livekit";option csharp_namespace = "LiveKit.Proto";option ruby_package = "LiveKit::Proto";import "livekit_models.proto";import "livekit_egress.proto";// Room service that can be performed on any node// they are Twirp-based HTTP req/responsesservice RoomService { // Creates a room with settings. Requires `roomCreate` permission. // This method is optional; rooms are automatically created when clients connect to them for the first time. rpc CreateRoom(CreateRoomRequest) returns (Room); // List rooms that are active on the server. Requires `roomList` permission. rpc ListRooms(ListRoomsRequest) returns (ListRoomsResponse); // Deletes an existing room by name or id. Requires `roomCreate` permission. // DeleteRoom will disconnect all participants that are currently in the room. rpc DeleteRoom(DeleteRoomRequest) returns (DeleteRoomResponse); // Lists participants in a room, Requires `roomAdmin` rpc ListParticipants(ListParticipantsRequest) returns (ListParticipantsResponse); // Get information on a specific participant, Requires `roomAdmin` rpc GetParticipant(RoomParticipantIdentity) returns (ParticipantInfo); // Removes a participant from room. Requires `roomAdmin` rpc RemoveParticipant(RoomParticipantIdentity) returns (RemoveParticipantResponse); // Mute/unmute a participant's track, Requires `roomAdmin` rpc MutePublishedTrack(MuteRoomTrackRequest) returns (MuteRoomTrackResponse); // Update participant metadata, will cause updates to be broadcasted to everyone in the room. Requires `roomAdmin` rpc UpdateParticipant(UpdateParticipantRequest) returns (ParticipantInfo); // Subscribes or unsubscribe a participant from tracks. Requires `roomAdmin` rpc UpdateSubscriptions(UpdateSubscriptionsRequest) returns (UpdateSubscriptionsResponse); // Send data over data channel to participants in a room, Requires `roomAdmin` rpc SendData(SendDataRequest) returns (SendDataResponse); // Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin` rpc UpdateRoomMetadata (UpdateRoomMetadataRequest) returns (Room);}message CreateRoomRequest { // name of the room string name = 1; // number of seconds to keep the room open if no one joins uint32 empty_timeout = 2; // limit number of participants that can be in a room uint32 max_participants = 3; // override the node room is allocated to, for debugging string node_id = 4; // metadata of room string metadata = 5; // egress RoomEgress egress = 6;}message RoomEgress { RoomCompositeEgressRequest room = 1; AutoTrackEgress tracks = 2;}message ListRoomsRequest { // when set, will only return rooms with name match repeated string names = 1;}message ListRoomsResponse { repeated Room rooms = 1;}message DeleteRoomRequest { // name of the room string room = 1;}message DeleteRoomResponse {}message ListParticipantsRequest { // name of the room string room = 1;}message ListParticipantsResponse { repeated ParticipantInfo participants = 1;}message RoomParticipantIdentity { // name of the room string room = 1; // identity of the participant string identity = 2;}message RemoveParticipantResponse {}message MuteRoomTrackRequest { // name of the room string room = 1; string identity = 2; // sid of the track to mute string track_sid = 3; // set to true to mute, false to unmute bool muted = 4;}message MuteRoomTrackResponse { TrackInfo track = 1;}message UpdateParticipantRequest { string room = 1; string identity = 2; // metadata to update. skipping updates if left empty string metadata = 3; // set to update the participant's permissions ParticipantPermission permission = 4;}message UpdateSubscriptionsRequest { string room = 1; string identity = 2; // list of sids of tracks repeated string track_sids = 3; // set to true to subscribe, false to unsubscribe from tracks bool subscribe = 4; // list of participants and their tracks repeated ParticipantTracks participant_tracks = 5;}message UpdateSubscriptionsResponse { // empty for now}message SendDataRequest { string room = 1; bytes data = 2; DataPacket.Kind kind = 3; repeated string destination_sids = 4;}message SendDataResponse { //}message UpdateRoomMetadataRequest { string room = 1; // metadata to update. skipping updates if left empty string metadata = 2;}
syntax = "proto3";
package livekit;
option go_package = "github.com/livekit/protocol/livekit";
option csharp_namespace = "LiveKit.Proto";
option ruby_package = "LiveKit::Proto";
import "livekit_models.proto";
import "livekit_egress.proto";
// Room service that can be performed on any node
// they are Twirp-based HTTP req/responses
service RoomService {
// Creates a room with settings. Requires `roomCreate` permission.
// This method is optional; rooms are automatically created when clients connect to them for the first time.
rpc CreateRoom(CreateRoomRequest) returns (Room);
// List rooms that are active on the server. Requires `roomList` permission.
rpc ListRooms(ListRoomsRequest) returns (ListRoomsResponse);
// Deletes an existing room by name or id. Requires `roomCreate` permission.
// DeleteRoom will disconnect all participants that are currently in the room.
rpc DeleteRoom(DeleteRoomRequest) returns (DeleteRoomResponse);
// Lists participants in a room, Requires `roomAdmin`
rpc ListParticipants(ListParticipantsRequest) returns (ListParticipantsResponse);
// Get information on a specific participant, Requires `roomAdmin`
rpc GetParticipant(RoomParticipantIdentity) returns (ParticipantInfo);
// Removes a participant from room. Requires `roomAdmin`
rpc RemoveParticipant(RoomParticipantIdentity) returns (RemoveParticipantResponse);
// Mute/unmute a participant's track, Requires `roomAdmin`
rpc MutePublishedTrack(MuteRoomTrackRequest) returns (MuteRoomTrackResponse);
// Update participant metadata, will cause updates to be broadcasted to everyone in the room. Requires `roomAdmin`
rpc UpdateParticipant(UpdateParticipantRequest) returns (ParticipantInfo);
// Subscribes or unsubscribe a participant from tracks. Requires `roomAdmin`
rpc UpdateSubscriptions(UpdateSubscriptionsRequest) returns (UpdateSubscriptionsResponse);
// Send data over data channel to participants in a room, Requires `roomAdmin`
rpc SendData(SendDataRequest) returns (SendDataResponse);
// Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin`
rpc UpdateRoomMetadata (UpdateRoomMetadataRequest) returns (Room);
}
message CreateRoomRequest {
// name of the room
string name = 1;
// number of seconds to keep the room open if no one joins
uint32 empty_timeout = 2;
// limit number of participants that can be in a room
uint32 max_participants = 3;
// override the node room is allocated to, for debugging
string node_id = 4;
// metadata of room
string metadata = 5;
// egress
RoomEgress egress = 6;
}
message RoomEgress {
RoomCompositeEgressRequest room = 1;
AutoTrackEgress tracks = 2;
}
message ListRoomsRequest {
// when set, will only return rooms with name match
repeated string names = 1;
}
message ListRoomsResponse {
repeated Room rooms = 1;
}
message DeleteRoomRequest {
// name of the room
string room = 1;
}
message DeleteRoomResponse {
}
message ListParticipantsRequest {
// name of the room
string room = 1;
}
message ListParticipantsResponse {
repeated ParticipantInfo participants = 1;
}
message RoomParticipantIdentity {
// name of the room
string room = 1;
// identity of the participant
string identity = 2;
}
message RemoveParticipantResponse {
}
message MuteRoomTrackRequest {
// name of the room
string room = 1;
string identity = 2;
// sid of the track to mute
string track_sid = 3;
// set to true to mute, false to unmute
bool muted = 4;
}
message MuteRoomTrackResponse {
TrackInfo track = 1;
}
message UpdateParticipantRequest {
string room = 1;
string identity = 2;
// metadata to update. skipping updates if left empty
string metadata = 3;
// set to update the participant's permissions
ParticipantPermission permission = 4;
}
message UpdateSubscriptionsRequest {
string room = 1;
string identity = 2;
// list of sids of tracks
repeated string track_sids = 3;
// set to true to subscribe, false to unsubscribe from tracks
bool subscribe = 4;
// list of participants and their tracks
repeated ParticipantTracks participant_tracks = 5;
}
message UpdateSubscriptionsResponse {
// empty for now
}
message SendDataRequest {
string room = 1;
bytes data = 2;
DataPacket.Kind kind = 3;
repeated string destination_sids = 4;
}
message SendDataResponse {
//
}
message UpdateRoomMetadataRequest {
string room = 1;
// metadata to update. skipping updates if left empty
string metadata = 2;
}