mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-03 17:44:30 +00:00
160 lines
4.4 KiB
Protocol Buffer
160 lines
4.4 KiB
Protocol Buffer
|
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;
|
||
|
}
|