159 lines · 4.4 KB · Text
RawDownload
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;}