livekit_room.proto

  1syntax = "proto3";
  2
  3package livekit;
  4option go_package = "github.com/livekit/protocol/livekit";
  5option csharp_namespace = "LiveKit.Proto";
  6option ruby_package = "LiveKit::Proto";
  7
  8import "livekit_models.proto";
  9import "livekit_egress.proto";
 10
 11// Room service that can be performed on any node
 12// they are Twirp-based HTTP req/responses
 13service RoomService {
 14  // Creates a room with settings. Requires `roomCreate` permission.
 15  // This method is optional; rooms are automatically created when clients connect to them for the first time.
 16  rpc CreateRoom(CreateRoomRequest) returns (Room);
 17
 18  // List rooms that are active on the server. Requires `roomList` permission.
 19  rpc ListRooms(ListRoomsRequest) returns (ListRoomsResponse);
 20
 21  // Deletes an existing room by name or id. Requires `roomCreate` permission.
 22  // DeleteRoom will disconnect all participants that are currently in the room.
 23  rpc DeleteRoom(DeleteRoomRequest) returns (DeleteRoomResponse);
 24
 25  // Lists participants in a room, Requires `roomAdmin`
 26  rpc ListParticipants(ListParticipantsRequest) returns (ListParticipantsResponse);
 27
 28  // Get information on a specific participant, Requires `roomAdmin`
 29  rpc GetParticipant(RoomParticipantIdentity) returns (ParticipantInfo);
 30
 31  // Removes a participant from room. Requires `roomAdmin`
 32  rpc RemoveParticipant(RoomParticipantIdentity) returns (RemoveParticipantResponse);
 33
 34  // Mute/unmute a participant's track, Requires `roomAdmin`
 35  rpc MutePublishedTrack(MuteRoomTrackRequest) returns (MuteRoomTrackResponse);
 36
 37  // Update participant metadata, will cause updates to be broadcasted to everyone in the room. Requires `roomAdmin`
 38  rpc UpdateParticipant(UpdateParticipantRequest) returns (ParticipantInfo);
 39
 40  // Subscribes or unsubscribe a participant from tracks. Requires `roomAdmin`
 41  rpc UpdateSubscriptions(UpdateSubscriptionsRequest) returns (UpdateSubscriptionsResponse);
 42
 43  // Send data over data channel to participants in a room, Requires `roomAdmin`
 44  rpc SendData(SendDataRequest) returns (SendDataResponse);
 45
 46  // Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin`
 47  rpc UpdateRoomMetadata (UpdateRoomMetadataRequest) returns (Room);
 48}
 49
 50message CreateRoomRequest {
 51  // name of the room
 52  string name = 1;
 53  // number of seconds to keep the room open if no one joins
 54  uint32 empty_timeout = 2;
 55  // limit number of participants that can be in a room
 56  uint32 max_participants = 3;
 57  // override the node room is allocated to, for debugging
 58  string node_id = 4;
 59  // metadata of room
 60  string metadata = 5;
 61  // egress
 62  RoomEgress egress = 6;
 63}
 64
 65message RoomEgress {
 66  RoomCompositeEgressRequest room = 1;
 67  AutoTrackEgress tracks = 2;
 68}
 69
 70message ListRoomsRequest {
 71  // when set, will only return rooms with name match
 72  repeated string names = 1;
 73}
 74
 75message ListRoomsResponse {
 76  repeated Room rooms = 1;
 77}
 78
 79message DeleteRoomRequest {
 80  // name of the room
 81  string room = 1;
 82}
 83
 84message DeleteRoomResponse {
 85}
 86
 87message ListParticipantsRequest {
 88  // name of the room
 89  string room = 1;
 90}
 91
 92message ListParticipantsResponse {
 93  repeated ParticipantInfo participants = 1;
 94}
 95
 96message RoomParticipantIdentity {
 97  // name of the room
 98  string room = 1;
 99  // identity of the participant
100  string identity = 2;
101}
102
103message RemoveParticipantResponse {
104}
105
106message MuteRoomTrackRequest {
107  // name of the room
108  string room = 1;
109  string identity = 2;
110  // sid of the track to mute
111  string track_sid = 3;
112  // set to true to mute, false to unmute
113  bool muted = 4;
114}
115
116message MuteRoomTrackResponse {
117  TrackInfo track = 1;
118}
119
120message UpdateParticipantRequest {
121  string room = 1;
122  string identity = 2;
123  // metadata to update. skipping updates if left empty
124  string metadata = 3;
125  // set to update the participant's permissions
126  ParticipantPermission permission = 4;
127}
128
129message UpdateSubscriptionsRequest {
130  string room = 1;
131  string identity = 2;
132  // list of sids of tracks
133  repeated string track_sids = 3;
134  // set to true to subscribe, false to unsubscribe from tracks
135  bool subscribe = 4;
136  // list of participants and their tracks
137  repeated ParticipantTracks participant_tracks = 5;
138}
139
140message UpdateSubscriptionsResponse {
141  // empty for now
142}
143
144message SendDataRequest {
145  string room = 1;
146  bytes data = 2;
147  DataPacket.Kind kind = 3;
148  repeated string destination_sids = 4;
149}
150
151message SendDataResponse {
152  //
153}
154
155message UpdateRoomMetadataRequest {
156  string room = 1;
157  // metadata to update. skipping updates if left empty
158  string metadata = 2;
159}