From 1faadbddd87467d74625dfe55ca51679ac270b05 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 09:56:20 -0800 Subject: [PATCH 01/11] docs updates --- livekit-api/livekit/api/__init__.py | 5 +- livekit-api/livekit/api/livekit_api.py | 26 ++++++-- livekit-api/livekit/api/room_service.py | 88 +++++++++++++------------ 3 files changed, 72 insertions(+), 47 deletions(-) diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index 0355cbb4..4c965977 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -12,7 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""LiveKit API SDK""" +"""LiveKit Server APIs for Python + +See https://docs.livekit.io/home/server/ for docs and examples. +""" # flake8: noqa # re-export packages from protocol diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 29834842..276f7043 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -9,6 +9,17 @@ class LiveKitAPI: + """LiveKit Server API Client + + Usage: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room'])) + ``` + """ + def __init__( self, url: Optional[str] = None, @@ -37,23 +48,28 @@ def __init__( ) @property - def agent_dispatch(self): + def agent_dispatch(self) -> AgentDispatchService: + """See :class:`AgentDispatchService`""" return self._agent_dispatch @property - def room(self): + def room(self) -> RoomService: + """See :class:`RoomService`""" return self._room @property - def ingress(self): + def ingress(self) -> IngressService: + """See :class:`IngressService`""" return self._ingress @property - def egress(self): + def egress(self) -> EgressService: + """See :class:`EgressService`""" return self._egress @property - def sip(self): + def sip(self) -> SipService: + """See: :class:`SipService`""" return self._sip async def aclose(self): diff --git a/livekit-api/livekit/api/room_service.py b/livekit-api/livekit/api/room_service.py index 9c1b197a..18cd9257 100644 --- a/livekit-api/livekit/api/room_service.py +++ b/livekit-api/livekit/api/room_service.py @@ -1,6 +1,24 @@ import aiohttp -from livekit.protocol import room as proto_room -from livekit.protocol import models as proto_models +from livekit.protocol.room import ( + CreateRoomRequest, + ListRoomsRequest, + DeleteRoomRequest, + ListRoomsResponse, + DeleteRoomResponse, + ListParticipantsRequest, + ListParticipantsResponse, + RoomParticipantIdentity, + MuteRoomTrackRequest, + MuteRoomTrackResponse, + UpdateParticipantRequest, + UpdateSubscriptionsRequest, + SendDataRequest, + SendDataResponse, + UpdateRoomMetadataRequest, + RemoveParticipantResponse, + UpdateSubscriptionsResponse, +) +from livekit.protocol.models import Room, ParticipantInfo from ._service import Service from .access_token import VideoGrants @@ -13,124 +31,112 @@ def __init__( ): super().__init__(session, url, api_key, api_secret) - async def create_room( - self, create: proto_room.CreateRoomRequest - ) -> proto_models.Room: + async def create_room(self, create: CreateRoomRequest) -> Room: return await self._client.request( SVC, "CreateRoom", create, self._auth_header(VideoGrants(room_create=True)), - proto_models.Room, + Room, ) - async def list_rooms( - self, list: proto_room.ListRoomsRequest - ) -> proto_room.ListRoomsResponse: + async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse: return await self._client.request( SVC, "ListRooms", list, self._auth_header(VideoGrants(room_list=True)), - proto_room.ListRoomsResponse, + ListRoomsResponse, ) - async def delete_room( - self, delete: proto_room.DeleteRoomRequest - ) -> proto_room.DeleteRoomResponse: + async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse: return await self._client.request( SVC, "DeleteRoom", delete, self._auth_header(VideoGrants(room_create=True)), - proto_room.DeleteRoomResponse, + DeleteRoomResponse, ) - async def update_room_metadata( - self, update: proto_room.UpdateRoomMetadataRequest - ) -> proto_models.Room: + async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room: return await self._client.request( SVC, "UpdateRoomMetadata", update, self._auth_header(VideoGrants(room_admin=True, room=update.room)), - proto_models.Room, + Room, ) async def list_participants( - self, list: proto_room.ListParticipantsRequest - ) -> proto_room.ListParticipantsResponse: + self, list: ListParticipantsRequest + ) -> ListParticipantsResponse: return await self._client.request( SVC, "ListParticipants", list, self._auth_header(VideoGrants(room_admin=True, room=list.room)), - proto_room.ListParticipantsResponse, + ListParticipantsResponse, ) - async def get_participant( - self, get: proto_room.RoomParticipantIdentity - ) -> proto_models.ParticipantInfo: + async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo: return await self._client.request( SVC, "GetParticipant", get, self._auth_header(VideoGrants(room_admin=True, room=get.room)), - proto_models.ParticipantInfo, + ParticipantInfo, ) async def remove_participant( - self, remove: proto_room.RoomParticipantIdentity - ) -> proto_room.RemoveParticipantResponse: + self, remove: RoomParticipantIdentity + ) -> RemoveParticipantResponse: return await self._client.request( SVC, "RemoveParticipant", remove, self._auth_header(VideoGrants(room_admin=True, room=remove.room)), - proto_room.RemoveParticipantResponse, + RemoveParticipantResponse, ) async def mute_published_track( self, - update: proto_room.MuteRoomTrackRequest, - ) -> proto_room.MuteRoomTrackResponse: + update: MuteRoomTrackRequest, + ) -> MuteRoomTrackResponse: return await self._client.request( SVC, "MutePublishedTrack", update, self._auth_header(VideoGrants(room_admin=True, room=update.room)), - proto_room.MuteRoomTrackResponse, + MuteRoomTrackResponse, ) async def update_participant( - self, update: proto_room.UpdateParticipantRequest - ) -> proto_models.ParticipantInfo: + self, update: UpdateParticipantRequest + ) -> ParticipantInfo: return await self._client.request( SVC, "UpdateParticipant", update, self._auth_header(VideoGrants(room_admin=True, room=update.room)), - proto_models.ParticipantInfo, + ParticipantInfo, ) async def update_subscriptions( - self, update: proto_room.UpdateSubscriptionsRequest - ) -> proto_room.UpdateSubscriptionsResponse: + self, update: UpdateSubscriptionsRequest + ) -> UpdateSubscriptionsResponse: return await self._client.request( SVC, "UpdateSubscriptions", update, self._auth_header(VideoGrants(room_admin=True, room=update.room)), - proto_room.UpdateSubscriptionsResponse, + UpdateSubscriptionsResponse, ) - async def send_data( - self, send: proto_room.SendDataRequest - ) -> proto_room.SendDataResponse: + async def send_data(self, send: SendDataRequest) -> SendDataResponse: return await self._client.request( SVC, "SendData", send, self._auth_header(VideoGrants(room_admin=True, room=send.room)), - proto_room.SendDataResponse, + SendDataResponse, ) From 45d34a00dda4f4ebc131d0396acb0116c27cf06f Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:09:49 -0800 Subject: [PATCH 02/11] updates --- docs/index.html | 7 + docs/livekit/api.html | 2252 +++++++++++++++++ docs/livekit/api/_service.html | 390 +++ docs/livekit/api/access_token.html | 1942 ++++++++++++++ docs/livekit/api/agent_dispatch_service.html | 743 ++++++ docs/livekit/api/egress_service.html | 810 ++++++ docs/livekit/api/ingress_service.html | 550 ++++ docs/livekit/api/livekit_api.html | 665 +++++ docs/livekit/api/room_service.html | 882 +++++++ docs/livekit/api/sip_service.html | 978 +++++++ docs/livekit/api/twirp_client.html | 952 +++++++ docs/livekit/api/version.html | 242 ++ docs/livekit/api/webhook.html | 393 +++ docs/search.js | 46 + livekit-api/livekit/api/__init__.py | 22 +- .../livekit/api/agent_dispatch_service.py | 35 +- livekit-api/livekit/api/egress_service.py | 70 +- livekit-api/livekit/api/ingress_service.py | 40 +- livekit-api/livekit/api/livekit_api.py | 31 +- livekit-api/livekit/api/room_service.py | 34 +- livekit-api/livekit/api/sip_service.py | 86 +- livekit-api/livekit/api/webhook.py | 6 +- 22 files changed, 11052 insertions(+), 124 deletions(-) create mode 100644 docs/index.html create mode 100644 docs/livekit/api.html create mode 100644 docs/livekit/api/_service.html create mode 100644 docs/livekit/api/access_token.html create mode 100644 docs/livekit/api/agent_dispatch_service.html create mode 100644 docs/livekit/api/egress_service.html create mode 100644 docs/livekit/api/ingress_service.html create mode 100644 docs/livekit/api/livekit_api.html create mode 100644 docs/livekit/api/room_service.html create mode 100644 docs/livekit/api/sip_service.html create mode 100644 docs/livekit/api/twirp_client.html create mode 100644 docs/livekit/api/version.html create mode 100644 docs/livekit/api/webhook.html create mode 100644 docs/search.js diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..b3d77804 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/livekit/api.html b/docs/livekit/api.html new file mode 100644 index 00000000..aa95c10c --- /dev/null +++ b/docs/livekit/api.html @@ -0,0 +1,2252 @@ + + + + + + + livekit.api API documentation + + + + + + + + + +
+
+

+livekit.api

+ +

LiveKit Server APIs for Python

+ +

Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.

+ +

Primary entry point is LiveKitAPI.

+ +

See https://docs.livekit.io/reference/server/server-apis for more information.

+
+ + + + + +
 1# Copyright 2023 LiveKit, Inc.
+ 2#
+ 3# Licensed under the Apache License, Version 2.0 (the "License");
+ 4# you may not use this file except in compliance with the License.
+ 5# You may obtain a copy of the License at
+ 6#
+ 7#     http://www.apache.org/licenses/LICENSE-2.0
+ 8#
+ 9# Unless required by applicable law or agreed to in writing, software
+10# distributed under the License is distributed on an "AS IS" BASIS,
+11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+12# See the License for the specific language governing permissions and
+13# limitations under the License.
+14
+15"""LiveKit Server APIs for Python
+16
+17Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.
+18
+19Primary entry point is `LiveKitAPI`.
+20
+21See https://docs.livekit.io/reference/server/server-apis for more information.
+22"""
+23
+24# flake8: noqa
+25# re-export packages from protocol
+26from livekit.protocol.agent_dispatch import *
+27from livekit.protocol.agent import *
+28from livekit.protocol.egress import *
+29from livekit.protocol.ingress import *
+30from livekit.protocol.models import *
+31from livekit.protocol.room import *
+32from livekit.protocol.webhook import *
+33from livekit.protocol.sip import *
+34
+35from .twirp_client import TwirpError, TwirpErrorCode
+36from .livekit_api import LiveKitAPI
+37from .access_token import VideoGrants, SIPGrants, AccessToken, TokenVerifier
+38from .webhook import WebhookReceiver
+39from .version import __version__
+40
+41__all__ = [
+42    "LiveKitAPI",
+43    "room_service",
+44    "egress_service",
+45    "ingress_service",
+46    "sip_service",
+47    "agent_dispatch_service",
+48    "VideoGrants",
+49    "SIPGrants",
+50    "AccessToken",
+51    "TokenVerifier",
+52    "WebhookReceiver",
+53    "TwirpError",
+54    "TwirpErrorCode",
+55]
+
+ + +
+
+ +
+ + class + LiveKitAPI: + + + +
+ +
12class LiveKitAPI:
+13    """LiveKit Server API Client
+14    
+15    This class is the main entrypoint, which exposes all services.
+16
+17    Usage:
+18
+19    ```python
+20    from livekit import api
+21    lkapi = api.LiveKitAPI()
+22    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
+23    ```
+24    """
+25
+26    def __init__(
+27        self,
+28        url: Optional[str] = None,
+29        api_key: Optional[str] = None,
+30        api_secret: Optional[str] = None,
+31        *,
+32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
+33    ):
+34        """Create a new LiveKitAPI instance.
+35        
+36        Args:
+37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
+38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
+39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
+40            timeout: Request timeout (default: 60 seconds)
+41        """
+42        url = url or os.getenv("LIVEKIT_URL")
+43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+45
+46        if not url:
+47            raise ValueError("url must be set")
+48
+49        if not api_key or not api_secret:
+50            raise ValueError("api_key and api_secret must be set")
+51
+52        self._session = aiohttp.ClientSession(timeout=timeout)
+53        self._room = RoomService(self._session, url, api_key, api_secret)
+54        self._ingress = IngressService(self._session, url, api_key, api_secret)
+55        self._egress = EgressService(self._session, url, api_key, api_secret)
+56        self._sip = SipService(self._session, url, api_key, api_secret)
+57        self._agent_dispatch = AgentDispatchService(
+58            self._session, url, api_key, api_secret
+59        )
+60
+61    @property
+62    def agent_dispatch(self) -> AgentDispatchService:
+63        """Instance of the AgentDispatchService
+64        
+65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
+66        return self._agent_dispatch
+67
+68    @property
+69    def room(self) -> RoomService:
+70        """Instance of the RoomService
+71        
+72        See `livekit.api.room_service.RoomService`"""
+73        return self._room
+74
+75    @property
+76    def ingress(self) -> IngressService:
+77        """Instance of the IngressService
+78        
+79        See `livekit.api.ingress_service.IngressService`"""
+80        return self._ingress
+81
+82    @property
+83    def egress(self) -> EgressService:
+84        """Instance of the EgressService
+85        
+86        See `livekit.api.egress_service.EgressService`"""
+87        return self._egress
+88
+89    @property
+90    def sip(self) -> SipService:
+91        """Instance of the SipService
+92        
+93        See `livekit.api.sip_service.SipService`"""
+94        return self._sip
+95
+96    async def aclose(self):
+97        """@private"""
+98        await self._session.close()
+
+ + +

LiveKit Server API Client

+ +

This class is the main entrypoint, which exposes all services.

+ +

Usage:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
+
+
+
+ + +
+ +
+ + LiveKitAPI( url: Optional[str] = None, api_key: Optional[str] = None, api_secret: Optional[str] = None, *, timeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5)) + + + +
+ +
26    def __init__(
+27        self,
+28        url: Optional[str] = None,
+29        api_key: Optional[str] = None,
+30        api_secret: Optional[str] = None,
+31        *,
+32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
+33    ):
+34        """Create a new LiveKitAPI instance.
+35        
+36        Args:
+37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
+38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
+39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
+40            timeout: Request timeout (default: 60 seconds)
+41        """
+42        url = url or os.getenv("LIVEKIT_URL")
+43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+45
+46        if not url:
+47            raise ValueError("url must be set")
+48
+49        if not api_key or not api_secret:
+50            raise ValueError("api_key and api_secret must be set")
+51
+52        self._session = aiohttp.ClientSession(timeout=timeout)
+53        self._room = RoomService(self._session, url, api_key, api_secret)
+54        self._ingress = IngressService(self._session, url, api_key, api_secret)
+55        self._egress = EgressService(self._session, url, api_key, api_secret)
+56        self._sip = SipService(self._session, url, api_key, api_secret)
+57        self._agent_dispatch = AgentDispatchService(
+58            self._session, url, api_key, api_secret
+59        )
+
+ + +

Create a new LiveKitAPI instance.

+ +
Arguments:
+ +
    +
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • +
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • +
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • +
  • timeout: Request timeout (default: 60 seconds)
  • +
+
+ + +
+
+ +
+ agent_dispatch: livekit.api.agent_dispatch_service.AgentDispatchService + + + +
+ +
61    @property
+62    def agent_dispatch(self) -> AgentDispatchService:
+63        """Instance of the AgentDispatchService
+64        
+65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
+66        return self._agent_dispatch
+
+ + +

Instance of the AgentDispatchService

+ +

See livekit.api.agent_dispatch_service.AgentDispatchService

+
+ + +
+
+ +
+ room: livekit.api.room_service.RoomService + + + +
+ +
68    @property
+69    def room(self) -> RoomService:
+70        """Instance of the RoomService
+71        
+72        See `livekit.api.room_service.RoomService`"""
+73        return self._room
+
+ + +

Instance of the RoomService

+ +

See livekit.api.room_service.RoomService

+
+ + +
+
+ +
+ ingress: livekit.api.ingress_service.IngressService + + + +
+ +
75    @property
+76    def ingress(self) -> IngressService:
+77        """Instance of the IngressService
+78        
+79        See `livekit.api.ingress_service.IngressService`"""
+80        return self._ingress
+
+ + +

Instance of the IngressService

+ +

See livekit.api.ingress_service.IngressService

+
+ + +
+
+ +
+ egress: livekit.api.egress_service.EgressService + + + +
+ +
82    @property
+83    def egress(self) -> EgressService:
+84        """Instance of the EgressService
+85        
+86        See `livekit.api.egress_service.EgressService`"""
+87        return self._egress
+
+ + +

Instance of the EgressService

+ +

See livekit.api.egress_service.EgressService

+
+ + +
+
+ +
+ sip: livekit.api.sip_service.SipService + + + +
+ +
89    @property
+90    def sip(self) -> SipService:
+91        """Instance of the SipService
+92        
+93        See `livekit.api.sip_service.SipService`"""
+94        return self._sip
+
+ + +

Instance of the SipService

+ +

See livekit.api.sip_service.SipService

+
+ + +
+
+
+ +
+
@dataclasses.dataclass
+ + class + VideoGrants: + + + +
+ +
31@dataclasses.dataclass
+32class VideoGrants:
+33    # actions on rooms
+34    room_create: Optional[bool] = None
+35    room_list: Optional[bool] = None
+36    room_record: Optional[bool] = None
+37
+38    # actions on a particular room
+39    room_admin: Optional[bool] = None
+40    room_join: Optional[bool] = None
+41    room: str = ""
+42
+43    # permissions within a room
+44    can_publish: bool = True
+45    can_subscribe: bool = True
+46    can_publish_data: bool = True
+47
+48    # TrackSource types that a participant may publish.
+49    # When set, it supersedes CanPublish. Only sources explicitly set here can be
+50    # published
+51    can_publish_sources: Optional[List[str]] = None
+52
+53    # by default, a participant is not allowed to update its own metadata
+54    can_update_own_metadata: Optional[bool] = None
+55
+56    # actions on ingresses
+57    ingress_admin: Optional[bool] = None  # applies to all ingress
+58
+59    # participant is not visible to other participants (useful when making bots)
+60    hidden: Optional[bool] = None
+61
+62    # [deprecated] indicates to the room that current participant is a recorder
+63    recorder: Optional[bool] = None
+64
+65    # indicates that the holder can register as an Agent framework worker
+66    agent: Optional[bool] = None
+
+ + + + +
+
+ + VideoGrants( room_create: Optional[bool] = None, room_list: Optional[bool] = None, room_record: Optional[bool] = None, room_admin: Optional[bool] = None, room_join: Optional[bool] = None, room: str = '', can_publish: bool = True, can_subscribe: bool = True, can_publish_data: bool = True, can_publish_sources: Optional[List[str]] = None, can_update_own_metadata: Optional[bool] = None, ingress_admin: Optional[bool] = None, hidden: Optional[bool] = None, recorder: Optional[bool] = None, agent: Optional[bool] = None) + + +
+ + + + +
+
+
+ room_create: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_list: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_record: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_admin: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_join: Optional[bool] = +None + + +
+ + + + +
+
+
+ room: str = +'' + + +
+ + + + +
+
+
+ can_publish: bool = +True + + +
+ + + + +
+
+
+ can_subscribe: bool = +True + + +
+ + + + +
+
+
+ can_publish_data: bool = +True + + +
+ + + + +
+
+
+ can_publish_sources: Optional[List[str]] = +None + + +
+ + + + +
+
+
+ can_update_own_metadata: Optional[bool] = +None + + +
+ + + + +
+
+
+ ingress_admin: Optional[bool] = +None + + +
+ + + + +
+
+
+ hidden: Optional[bool] = +None + + +
+ + + + +
+
+
+ recorder: Optional[bool] = +None + + +
+ + + + +
+
+
+ agent: Optional[bool] = +None + + +
+ + + + +
+
+
+ +
+
@dataclasses.dataclass
+ + class + SIPGrants: + + + +
+ +
69@dataclasses.dataclass
+70class SIPGrants:
+71    # manage sip resources
+72    admin: bool = False
+73    # make outbound calls
+74    call: bool = False
+
+ + + + +
+
+ + SIPGrants(admin: bool = False, call: bool = False) + + +
+ + + + +
+
+
+ admin: bool = +False + + +
+ + + + +
+
+
+ call: bool = +False + + +
+ + + + +
+
+
+ +
+ + class + AccessToken: + + + +
+ +
105class AccessToken:
+106    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
+107
+108    def __init__(
+109        self,
+110        api_key: Optional[str] = None,
+111        api_secret: Optional[str] = None,
+112    ) -> None:
+113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+115
+116        if not api_key or not api_secret:
+117            raise ValueError("api_key and api_secret must be set")
+118
+119        self.api_key = api_key  # iss
+120        self.api_secret = api_secret
+121        self.claims = Claims()
+122
+123        # default jwt claims
+124        self.identity = ""  # sub
+125        self.ttl = DEFAULT_TTL  # exp
+126
+127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
+128        self.ttl = ttl
+129        return self
+130
+131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
+132        self.claims.video = grants
+133        return self
+134
+135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
+136        self.claims.sip = grants
+137        return self
+138
+139    def with_identity(self, identity: str) -> "AccessToken":
+140        self.identity = identity
+141        return self
+142
+143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
+144        self.claims.kind = kind
+145        return self
+146
+147    def with_name(self, name: str) -> "AccessToken":
+148        self.claims.name = name
+149        return self
+150
+151    def with_metadata(self, metadata: str) -> "AccessToken":
+152        self.claims.metadata = metadata
+153        return self
+154
+155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
+156        self.claims.attributes = attributes
+157        return self
+158
+159    def with_sha256(self, sha256: str) -> "AccessToken":
+160        self.claims.sha256 = sha256
+161        return self
+162
+163    def with_room_preset(self, preset: str) -> "AccessToken":
+164        self.claims.room_preset = preset
+165        return self
+166
+167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
+168        self.claims.room_config = config
+169        return self
+170
+171    def to_jwt(self) -> str:
+172        video = self.claims.video
+173        if video and video.room_join and (not self.identity or not video.room):
+174            raise ValueError("identity and room must be set when joining a room")
+175
+176        # we want to exclude None values from the token
+177        jwt_claims = self.claims.asdict()
+178        jwt_claims.update(
+179            {
+180                "sub": self.identity,
+181                "iss": self.api_key,
+182                "nbf": calendar.timegm(
+183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
+184                ),
+185                "exp": calendar.timegm(
+186                    (
+187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
+188                    ).utctimetuple()
+189                ),
+190            }
+191        )
+192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
+
+ + + + +
+ +
+ + AccessToken(api_key: Optional[str] = None, api_secret: Optional[str] = None) + + + +
+ +
108    def __init__(
+109        self,
+110        api_key: Optional[str] = None,
+111        api_secret: Optional[str] = None,
+112    ) -> None:
+113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+115
+116        if not api_key or not api_secret:
+117            raise ValueError("api_key and api_secret must be set")
+118
+119        self.api_key = api_key  # iss
+120        self.api_secret = api_secret
+121        self.claims = Claims()
+122
+123        # default jwt claims
+124        self.identity = ""  # sub
+125        self.ttl = DEFAULT_TTL  # exp
+
+ + + + +
+
+
+ ParticipantKind = +typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent'] + + +
+ + + + +
+
+
+ api_key + + +
+ + + + +
+
+
+ api_secret + + +
+ + + + +
+
+
+ claims + + +
+ + + + +
+
+
+ identity + + +
+ + + + +
+
+
+ ttl + + +
+ + + + +
+
+ +
+ + def + with_ttl(self, ttl: datetime.timedelta) -> AccessToken: + + + +
+ +
127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
+128        self.ttl = ttl
+129        return self
+
+ + + + +
+
+ +
+ + def + with_grants( self, grants: VideoGrants) -> AccessToken: + + + +
+ +
131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
+132        self.claims.video = grants
+133        return self
+
+ + + + +
+
+ +
+ + def + with_sip_grants( self, grants: SIPGrants) -> AccessToken: + + + +
+ +
135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
+136        self.claims.sip = grants
+137        return self
+
+ + + + +
+
+ +
+ + def + with_identity(self, identity: str) -> AccessToken: + + + +
+ +
139    def with_identity(self, identity: str) -> "AccessToken":
+140        self.identity = identity
+141        return self
+
+ + + + +
+
+ +
+ + def + with_kind( self, kind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> AccessToken: + + + +
+ +
143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
+144        self.claims.kind = kind
+145        return self
+
+ + + + +
+
+ +
+ + def + with_name(self, name: str) -> AccessToken: + + + +
+ +
147    def with_name(self, name: str) -> "AccessToken":
+148        self.claims.name = name
+149        return self
+
+ + + + +
+
+ +
+ + def + with_metadata(self, metadata: str) -> AccessToken: + + + +
+ +
151    def with_metadata(self, metadata: str) -> "AccessToken":
+152        self.claims.metadata = metadata
+153        return self
+
+ + + + +
+
+ +
+ + def + with_attributes(self, attributes: dict[str, str]) -> AccessToken: + + + +
+ +
155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
+156        self.claims.attributes = attributes
+157        return self
+
+ + + + +
+
+ +
+ + def + with_sha256(self, sha256: str) -> AccessToken: + + + +
+ +
159    def with_sha256(self, sha256: str) -> "AccessToken":
+160        self.claims.sha256 = sha256
+161        return self
+
+ + + + +
+
+ +
+ + def + with_room_preset(self, preset: str) -> AccessToken: + + + +
+ +
163    def with_room_preset(self, preset: str) -> "AccessToken":
+164        self.claims.room_preset = preset
+165        return self
+
+ + + + +
+
+ +
+ + def + with_room_config( self, config: room.RoomConfiguration) -> AccessToken: + + + +
+ +
167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
+168        self.claims.room_config = config
+169        return self
+
+ + + + +
+
+ +
+ + def + to_jwt(self) -> str: + + + +
+ +
171    def to_jwt(self) -> str:
+172        video = self.claims.video
+173        if video and video.room_join and (not self.identity or not video.room):
+174            raise ValueError("identity and room must be set when joining a room")
+175
+176        # we want to exclude None values from the token
+177        jwt_claims = self.claims.asdict()
+178        jwt_claims.update(
+179            {
+180                "sub": self.identity,
+181                "iss": self.api_key,
+182                "nbf": calendar.timegm(
+183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
+184                ),
+185                "exp": calendar.timegm(
+186                    (
+187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
+188                    ).utctimetuple()
+189                ),
+190            }
+191        )
+192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
+
+ + + + +
+
+
+ +
+ + class + TokenVerifier: + + + +
+ +
195class TokenVerifier:
+196    def __init__(
+197        self,
+198        api_key: Optional[str] = None,
+199        api_secret: Optional[str] = None,
+200        *,
+201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
+202    ) -> None:
+203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+205
+206        if not api_key or not api_secret:
+207            raise ValueError("api_key and api_secret must be set")
+208
+209        self.api_key = api_key
+210        self.api_secret = api_secret
+211        self._leeway = leeway
+212
+213    def verify(self, token: str) -> Claims:
+214        claims = jwt.decode(
+215            token,
+216            self.api_secret,
+217            issuer=self.api_key,
+218            algorithms=["HS256"],
+219            leeway=self._leeway.total_seconds(),
+220        )
+221
+222        video_dict = claims.get("video", dict())
+223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
+224        video_dict = {
+225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
+226        }
+227        video = VideoGrants(**video_dict)
+228
+229        sip_dict = claims.get("sip", dict())
+230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
+231        sip_dict = {
+232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
+233        }
+234        sip = SIPGrants(**sip_dict)
+235
+236        grant_claims = Claims(
+237            identity=claims.get("sub", ""),
+238            name=claims.get("name", ""),
+239            video=video,
+240            sip=sip,
+241            attributes=claims.get("attributes", {}),
+242            metadata=claims.get("metadata", ""),
+243            sha256=claims.get("sha256", ""),
+244        )
+245
+246        if claims.get("roomPreset"):
+247            grant_claims.room_preset = claims.get("roomPreset")
+248        if claims.get("roomConfig"):
+249            grant_claims.room_config = ParseDict(
+250                claims.get("roomConfig"),
+251                RoomConfiguration(),
+252                ignore_unknown_fields=True,
+253            )
+254
+255        return grant_claims
+
+ + + + +
+ +
+ + TokenVerifier( api_key: Optional[str] = None, api_secret: Optional[str] = None, *, leeway: datetime.timedelta = datetime.timedelta(seconds=60)) + + + +
+ +
196    def __init__(
+197        self,
+198        api_key: Optional[str] = None,
+199        api_secret: Optional[str] = None,
+200        *,
+201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
+202    ) -> None:
+203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+205
+206        if not api_key or not api_secret:
+207            raise ValueError("api_key and api_secret must be set")
+208
+209        self.api_key = api_key
+210        self.api_secret = api_secret
+211        self._leeway = leeway
+
+ + + + +
+
+
+ api_key + + +
+ + + + +
+
+
+ api_secret + + +
+ + + + +
+
+ +
+ + def + verify(self, token: str) -> livekit.api.access_token.Claims: + + + +
+ +
213    def verify(self, token: str) -> Claims:
+214        claims = jwt.decode(
+215            token,
+216            self.api_secret,
+217            issuer=self.api_key,
+218            algorithms=["HS256"],
+219            leeway=self._leeway.total_seconds(),
+220        )
+221
+222        video_dict = claims.get("video", dict())
+223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
+224        video_dict = {
+225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
+226        }
+227        video = VideoGrants(**video_dict)
+228
+229        sip_dict = claims.get("sip", dict())
+230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
+231        sip_dict = {
+232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
+233        }
+234        sip = SIPGrants(**sip_dict)
+235
+236        grant_claims = Claims(
+237            identity=claims.get("sub", ""),
+238            name=claims.get("name", ""),
+239            video=video,
+240            sip=sip,
+241            attributes=claims.get("attributes", {}),
+242            metadata=claims.get("metadata", ""),
+243            sha256=claims.get("sha256", ""),
+244        )
+245
+246        if claims.get("roomPreset"):
+247            grant_claims.room_preset = claims.get("roomPreset")
+248        if claims.get("roomConfig"):
+249            grant_claims.room_config = ParseDict(
+250                claims.get("roomConfig"),
+251                RoomConfiguration(),
+252                ignore_unknown_fields=True,
+253            )
+254
+255        return grant_claims
+
+ + + + +
+
+
+ +
+ + class + WebhookReceiver: + + + +
+ +
 9class WebhookReceiver:
+10    def __init__(self, token_verifier: TokenVerifier):
+11        self._verifier = token_verifier
+12
+13    def receive(self, body: str, auth_token: str) -> WebhookEvent:
+14        claims = self._verifier.verify(auth_token)
+15        if claims.sha256 is None:
+16            raise Exception("sha256 was not found in the token")
+17
+18        body_hash = hashlib.sha256(body.encode()).digest()
+19        claims_hash = base64.b64decode(claims.sha256)
+20
+21        if body_hash != claims_hash:
+22            raise Exception("hash mismatch")
+23
+24        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
+
+ + + + +
+ +
+ + WebhookReceiver(token_verifier: TokenVerifier) + + + +
+ +
10    def __init__(self, token_verifier: TokenVerifier):
+11        self._verifier = token_verifier
+
+ + + + +
+
+ +
+ + def + receive(self, body: str, auth_token: str) -> webhook.WebhookEvent: + + + +
+ +
13    def receive(self, body: str, auth_token: str) -> WebhookEvent:
+14        claims = self._verifier.verify(auth_token)
+15        if claims.sha256 is None:
+16            raise Exception("sha256 was not found in the token")
+17
+18        body_hash = hashlib.sha256(body.encode()).digest()
+19        claims_hash = base64.b64decode(claims.sha256)
+20
+21        if body_hash != claims_hash:
+22            raise Exception("hash mismatch")
+23
+24        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
+
+ + + + +
+
+
+ +
+ + class + TwirpError(builtins.Exception): + + + +
+ +
25class TwirpError(Exception):
+26    def __init__(self, code: str, msg: str) -> None:
+27        self._code = code
+28        self._msg = msg
+29
+30    @property
+31    def code(self) -> str:
+32        return self._code
+33
+34    @property
+35    def message(self) -> str:
+36        return self._msg
+
+ + +

Common base class for all non-exit exceptions.

+
+ + +
+ +
+ + TwirpError(code: str, msg: str) + + + +
+ +
26    def __init__(self, code: str, msg: str) -> None:
+27        self._code = code
+28        self._msg = msg
+
+ + + + +
+
+ +
+ code: str + + + +
+ +
30    @property
+31    def code(self) -> str:
+32        return self._code
+
+ + + + +
+
+ +
+ message: str + + + +
+ +
34    @property
+35    def message(self) -> str:
+36        return self._msg
+
+ + + + +
+
+
+ +
+ + class + TwirpErrorCode: + + + +
+ +
39class TwirpErrorCode:
+40    CANCELED = "canceled"
+41    UNKNOWN = "unknown"
+42    INVALID_ARGUMENT = "invalid_argument"
+43    MALFORMED = "malformed"
+44    DEADLINE_EXCEEDED = "deadline_exceeded"
+45    NOT_FOUND = "not_found"
+46    BAD_ROUTE = "bad_route"
+47    ALREADY_EXISTS = "already_exists"
+48    PERMISSION_DENIED = "permission_denied"
+49    UNAUTHENTICATED = "unauthenticated"
+50    RESOURCE_EXHAUSTED = "resource_exhausted"
+51    FAILED_PRECONDITION = "failed_precondition"
+52    ABORTED = "aborted"
+53    OUT_OF_RANGE = "out_of_range"
+54    UNIMPLEMENTED = "unimplemented"
+55    INTERNAL = "internal"
+56    UNAVAILABLE = "unavailable"
+57    DATA_LOSS = "dataloss"
+
+ + + + +
+
+ CANCELED = +'canceled' + + +
+ + + + +
+
+
+ UNKNOWN = +'unknown' + + +
+ + + + +
+
+
+ INVALID_ARGUMENT = +'invalid_argument' + + +
+ + + + +
+
+
+ MALFORMED = +'malformed' + + +
+ + + + +
+
+
+ DEADLINE_EXCEEDED = +'deadline_exceeded' + + +
+ + + + +
+
+
+ NOT_FOUND = +'not_found' + + +
+ + + + +
+
+
+ BAD_ROUTE = +'bad_route' + + +
+ + + + +
+
+
+ ALREADY_EXISTS = +'already_exists' + + +
+ + + + +
+
+
+ PERMISSION_DENIED = +'permission_denied' + + +
+ + + + +
+
+
+ UNAUTHENTICATED = +'unauthenticated' + + +
+ + + + +
+
+
+ RESOURCE_EXHAUSTED = +'resource_exhausted' + + +
+ + + + +
+
+
+ FAILED_PRECONDITION = +'failed_precondition' + + +
+ + + + +
+
+
+ ABORTED = +'aborted' + + +
+ + + + +
+
+
+ OUT_OF_RANGE = +'out_of_range' + + +
+ + + + +
+
+
+ UNIMPLEMENTED = +'unimplemented' + + +
+ + + + +
+
+
+ INTERNAL = +'internal' + + +
+ + + + +
+
+
+ UNAVAILABLE = +'unavailable' + + +
+ + + + +
+
+
+ DATA_LOSS = +'dataloss' + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/_service.html b/docs/livekit/api/_service.html new file mode 100644 index 00000000..2e377cfa --- /dev/null +++ b/docs/livekit/api/_service.html @@ -0,0 +1,390 @@ + + + + + + + livekit.api._service API documentation + + + + + + + + + +
+
+

+livekit.api._service

+ + + + + + +
 1from __future__ import annotations
+ 2
+ 3from typing import Dict
+ 4import aiohttp
+ 5from abc import ABC
+ 6from .twirp_client import TwirpClient
+ 7from .access_token import AccessToken, VideoGrants, SIPGrants
+ 8
+ 9AUTHORIZATION = "authorization"
+10
+11
+12class Service(ABC):
+13    def __init__(
+14        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
+15    ):
+16        self._client = TwirpClient(session, host, "livekit")
+17        self.api_key = api_key
+18        self.api_secret = api_secret
+19
+20    def _auth_header(
+21        self, grants: VideoGrants | None, sip: SIPGrants | None = None
+22    ) -> Dict[str, str]:
+23        tok = AccessToken(self.api_key, self.api_secret)
+24        if grants:
+25            tok.with_grants(grants)
+26        if sip is not None:
+27            tok.with_sip_grants(sip)
+28
+29        token = tok.to_jwt()
+30
+31        headers = {}
+32        headers[AUTHORIZATION] = "Bearer {}".format(token)
+33        return headers
+
+ + +
+
+
+ AUTHORIZATION = +'authorization' + + +
+ + + + +
+
+ +
+ + class + Service(abc.ABC): + + + +
+ +
13class Service(ABC):
+14    def __init__(
+15        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
+16    ):
+17        self._client = TwirpClient(session, host, "livekit")
+18        self.api_key = api_key
+19        self.api_secret = api_secret
+20
+21    def _auth_header(
+22        self, grants: VideoGrants | None, sip: SIPGrants | None = None
+23    ) -> Dict[str, str]:
+24        tok = AccessToken(self.api_key, self.api_secret)
+25        if grants:
+26            tok.with_grants(grants)
+27        if sip is not None:
+28            tok.with_sip_grants(sip)
+29
+30        token = tok.to_jwt()
+31
+32        headers = {}
+33        headers[AUTHORIZATION] = "Bearer {}".format(token)
+34        return headers
+
+ + +

Helper class that provides a standard way to create an ABC using +inheritance.

+
+ + +
+ +
+ + Service( session: aiohttp.client.ClientSession, host: str, api_key: str, api_secret: str) + + + +
+ +
14    def __init__(
+15        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
+16    ):
+17        self._client = TwirpClient(session, host, "livekit")
+18        self.api_key = api_key
+19        self.api_secret = api_secret
+
+ + + + +
+
+
+ api_key + + +
+ + + + +
+
+
+ api_secret + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/access_token.html b/docs/livekit/api/access_token.html new file mode 100644 index 00000000..fbb13d90 --- /dev/null +++ b/docs/livekit/api/access_token.html @@ -0,0 +1,1942 @@ + + + + + + + livekit.api.access_token API documentation + + + + + + + + + +
+
+

+livekit.api.access_token

+ + + + + + +
  1# Copyright 2023 LiveKit, Inc.
+  2#
+  3# Licensed under the Apache License, Version 2.0 (the "License");
+  4# you may not use this file except in compliance with the License.
+  5# You may obtain a copy of the License at
+  6#
+  7#     http://www.apache.org/licenses/LICENSE-2.0
+  8#
+  9# Unless required by applicable law or agreed to in writing, software
+ 10# distributed under the License is distributed on an "AS IS" BASIS,
+ 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ 12# See the License for the specific language governing permissions and
+ 13# limitations under the License.
+ 14
+ 15import calendar
+ 16import dataclasses
+ 17import re
+ 18import datetime
+ 19import os
+ 20import jwt
+ 21from typing import Optional, List, Literal
+ 22from google.protobuf.json_format import MessageToDict, ParseDict
+ 23
+ 24from livekit.protocol.room import RoomConfiguration
+ 25
+ 26DEFAULT_TTL = datetime.timedelta(hours=6)
+ 27DEFAULT_LEEWAY = datetime.timedelta(minutes=1)
+ 28
+ 29
+ 30@dataclasses.dataclass
+ 31class VideoGrants:
+ 32    # actions on rooms
+ 33    room_create: Optional[bool] = None
+ 34    room_list: Optional[bool] = None
+ 35    room_record: Optional[bool] = None
+ 36
+ 37    # actions on a particular room
+ 38    room_admin: Optional[bool] = None
+ 39    room_join: Optional[bool] = None
+ 40    room: str = ""
+ 41
+ 42    # permissions within a room
+ 43    can_publish: bool = True
+ 44    can_subscribe: bool = True
+ 45    can_publish_data: bool = True
+ 46
+ 47    # TrackSource types that a participant may publish.
+ 48    # When set, it supersedes CanPublish. Only sources explicitly set here can be
+ 49    # published
+ 50    can_publish_sources: Optional[List[str]] = None
+ 51
+ 52    # by default, a participant is not allowed to update its own metadata
+ 53    can_update_own_metadata: Optional[bool] = None
+ 54
+ 55    # actions on ingresses
+ 56    ingress_admin: Optional[bool] = None  # applies to all ingress
+ 57
+ 58    # participant is not visible to other participants (useful when making bots)
+ 59    hidden: Optional[bool] = None
+ 60
+ 61    # [deprecated] indicates to the room that current participant is a recorder
+ 62    recorder: Optional[bool] = None
+ 63
+ 64    # indicates that the holder can register as an Agent framework worker
+ 65    agent: Optional[bool] = None
+ 66
+ 67
+ 68@dataclasses.dataclass
+ 69class SIPGrants:
+ 70    # manage sip resources
+ 71    admin: bool = False
+ 72    # make outbound calls
+ 73    call: bool = False
+ 74
+ 75
+ 76@dataclasses.dataclass
+ 77class Claims:
+ 78    identity: str = ""
+ 79    name: str = ""
+ 80    kind: str = ""
+ 81    metadata: str = ""
+ 82    video: Optional[VideoGrants] = None
+ 83    sip: Optional[SIPGrants] = None
+ 84    attributes: Optional[dict[str, str]] = None
+ 85    sha256: Optional[str] = None
+ 86    room_preset: Optional[str] = None
+ 87    room_config: Optional[RoomConfiguration] = None
+ 88
+ 89    def asdict(self) -> dict:
+ 90        # in order to produce minimal JWT size, exclude None or empty values
+ 91        claims = dataclasses.asdict(
+ 92            self,
+ 93            dict_factory=lambda items: {
+ 94                snake_to_lower_camel(k): v
+ 95                for k, v in items
+ 96                if v is not None and v != ""
+ 97            },
+ 98        )
+ 99        if self.room_config:
+100            claims["roomConfig"] = MessageToDict(self.room_config)
+101        return claims
+102
+103
+104class AccessToken:
+105    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
+106
+107    def __init__(
+108        self,
+109        api_key: Optional[str] = None,
+110        api_secret: Optional[str] = None,
+111    ) -> None:
+112        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+113        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+114
+115        if not api_key or not api_secret:
+116            raise ValueError("api_key and api_secret must be set")
+117
+118        self.api_key = api_key  # iss
+119        self.api_secret = api_secret
+120        self.claims = Claims()
+121
+122        # default jwt claims
+123        self.identity = ""  # sub
+124        self.ttl = DEFAULT_TTL  # exp
+125
+126    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
+127        self.ttl = ttl
+128        return self
+129
+130    def with_grants(self, grants: VideoGrants) -> "AccessToken":
+131        self.claims.video = grants
+132        return self
+133
+134    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
+135        self.claims.sip = grants
+136        return self
+137
+138    def with_identity(self, identity: str) -> "AccessToken":
+139        self.identity = identity
+140        return self
+141
+142    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
+143        self.claims.kind = kind
+144        return self
+145
+146    def with_name(self, name: str) -> "AccessToken":
+147        self.claims.name = name
+148        return self
+149
+150    def with_metadata(self, metadata: str) -> "AccessToken":
+151        self.claims.metadata = metadata
+152        return self
+153
+154    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
+155        self.claims.attributes = attributes
+156        return self
+157
+158    def with_sha256(self, sha256: str) -> "AccessToken":
+159        self.claims.sha256 = sha256
+160        return self
+161
+162    def with_room_preset(self, preset: str) -> "AccessToken":
+163        self.claims.room_preset = preset
+164        return self
+165
+166    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
+167        self.claims.room_config = config
+168        return self
+169
+170    def to_jwt(self) -> str:
+171        video = self.claims.video
+172        if video and video.room_join and (not self.identity or not video.room):
+173            raise ValueError("identity and room must be set when joining a room")
+174
+175        # we want to exclude None values from the token
+176        jwt_claims = self.claims.asdict()
+177        jwt_claims.update(
+178            {
+179                "sub": self.identity,
+180                "iss": self.api_key,
+181                "nbf": calendar.timegm(
+182                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
+183                ),
+184                "exp": calendar.timegm(
+185                    (
+186                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
+187                    ).utctimetuple()
+188                ),
+189            }
+190        )
+191        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
+192
+193
+194class TokenVerifier:
+195    def __init__(
+196        self,
+197        api_key: Optional[str] = None,
+198        api_secret: Optional[str] = None,
+199        *,
+200        leeway: datetime.timedelta = DEFAULT_LEEWAY,
+201    ) -> None:
+202        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+203        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+204
+205        if not api_key or not api_secret:
+206            raise ValueError("api_key and api_secret must be set")
+207
+208        self.api_key = api_key
+209        self.api_secret = api_secret
+210        self._leeway = leeway
+211
+212    def verify(self, token: str) -> Claims:
+213        claims = jwt.decode(
+214            token,
+215            self.api_secret,
+216            issuer=self.api_key,
+217            algorithms=["HS256"],
+218            leeway=self._leeway.total_seconds(),
+219        )
+220
+221        video_dict = claims.get("video", dict())
+222        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
+223        video_dict = {
+224            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
+225        }
+226        video = VideoGrants(**video_dict)
+227
+228        sip_dict = claims.get("sip", dict())
+229        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
+230        sip_dict = {
+231            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
+232        }
+233        sip = SIPGrants(**sip_dict)
+234
+235        grant_claims = Claims(
+236            identity=claims.get("sub", ""),
+237            name=claims.get("name", ""),
+238            video=video,
+239            sip=sip,
+240            attributes=claims.get("attributes", {}),
+241            metadata=claims.get("metadata", ""),
+242            sha256=claims.get("sha256", ""),
+243        )
+244
+245        if claims.get("roomPreset"):
+246            grant_claims.room_preset = claims.get("roomPreset")
+247        if claims.get("roomConfig"):
+248            grant_claims.room_config = ParseDict(
+249                claims.get("roomConfig"),
+250                RoomConfiguration(),
+251                ignore_unknown_fields=True,
+252            )
+253
+254        return grant_claims
+255
+256
+257def camel_to_snake(t: str):
+258    return re.sub(r"(?<!^)(?=[A-Z])", "_", t).lower()
+259
+260
+261def snake_to_lower_camel(t: str):
+262    return "".join(
+263        word.capitalize() if i else word for i, word in enumerate(t.split("_"))
+264    )
+
+ + +
+
+
+ DEFAULT_TTL = +datetime.timedelta(seconds=21600) + + +
+ + + + +
+
+
+ DEFAULT_LEEWAY = +datetime.timedelta(seconds=60) + + +
+ + + + +
+
+ +
+
@dataclasses.dataclass
+ + class + VideoGrants: + + + +
+ +
31@dataclasses.dataclass
+32class VideoGrants:
+33    # actions on rooms
+34    room_create: Optional[bool] = None
+35    room_list: Optional[bool] = None
+36    room_record: Optional[bool] = None
+37
+38    # actions on a particular room
+39    room_admin: Optional[bool] = None
+40    room_join: Optional[bool] = None
+41    room: str = ""
+42
+43    # permissions within a room
+44    can_publish: bool = True
+45    can_subscribe: bool = True
+46    can_publish_data: bool = True
+47
+48    # TrackSource types that a participant may publish.
+49    # When set, it supersedes CanPublish. Only sources explicitly set here can be
+50    # published
+51    can_publish_sources: Optional[List[str]] = None
+52
+53    # by default, a participant is not allowed to update its own metadata
+54    can_update_own_metadata: Optional[bool] = None
+55
+56    # actions on ingresses
+57    ingress_admin: Optional[bool] = None  # applies to all ingress
+58
+59    # participant is not visible to other participants (useful when making bots)
+60    hidden: Optional[bool] = None
+61
+62    # [deprecated] indicates to the room that current participant is a recorder
+63    recorder: Optional[bool] = None
+64
+65    # indicates that the holder can register as an Agent framework worker
+66    agent: Optional[bool] = None
+
+ + + + +
+
+ + VideoGrants( room_create: Optional[bool] = None, room_list: Optional[bool] = None, room_record: Optional[bool] = None, room_admin: Optional[bool] = None, room_join: Optional[bool] = None, room: str = '', can_publish: bool = True, can_subscribe: bool = True, can_publish_data: bool = True, can_publish_sources: Optional[List[str]] = None, can_update_own_metadata: Optional[bool] = None, ingress_admin: Optional[bool] = None, hidden: Optional[bool] = None, recorder: Optional[bool] = None, agent: Optional[bool] = None) + + +
+ + + + +
+
+
+ room_create: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_list: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_record: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_admin: Optional[bool] = +None + + +
+ + + + +
+
+
+ room_join: Optional[bool] = +None + + +
+ + + + +
+
+
+ room: str = +'' + + +
+ + + + +
+
+
+ can_publish: bool = +True + + +
+ + + + +
+
+
+ can_subscribe: bool = +True + + +
+ + + + +
+
+
+ can_publish_data: bool = +True + + +
+ + + + +
+
+
+ can_publish_sources: Optional[List[str]] = +None + + +
+ + + + +
+
+
+ can_update_own_metadata: Optional[bool] = +None + + +
+ + + + +
+
+
+ ingress_admin: Optional[bool] = +None + + +
+ + + + +
+
+
+ hidden: Optional[bool] = +None + + +
+ + + + +
+
+
+ recorder: Optional[bool] = +None + + +
+ + + + +
+
+
+ agent: Optional[bool] = +None + + +
+ + + + +
+
+
+ +
+
@dataclasses.dataclass
+ + class + SIPGrants: + + + +
+ +
69@dataclasses.dataclass
+70class SIPGrants:
+71    # manage sip resources
+72    admin: bool = False
+73    # make outbound calls
+74    call: bool = False
+
+ + + + +
+
+ + SIPGrants(admin: bool = False, call: bool = False) + + +
+ + + + +
+
+
+ admin: bool = +False + + +
+ + + + +
+
+
+ call: bool = +False + + +
+ + + + +
+
+
+ +
+
@dataclasses.dataclass
+ + class + Claims: + + + +
+ +
 77@dataclasses.dataclass
+ 78class Claims:
+ 79    identity: str = ""
+ 80    name: str = ""
+ 81    kind: str = ""
+ 82    metadata: str = ""
+ 83    video: Optional[VideoGrants] = None
+ 84    sip: Optional[SIPGrants] = None
+ 85    attributes: Optional[dict[str, str]] = None
+ 86    sha256: Optional[str] = None
+ 87    room_preset: Optional[str] = None
+ 88    room_config: Optional[RoomConfiguration] = None
+ 89
+ 90    def asdict(self) -> dict:
+ 91        # in order to produce minimal JWT size, exclude None or empty values
+ 92        claims = dataclasses.asdict(
+ 93            self,
+ 94            dict_factory=lambda items: {
+ 95                snake_to_lower_camel(k): v
+ 96                for k, v in items
+ 97                if v is not None and v != ""
+ 98            },
+ 99        )
+100        if self.room_config:
+101            claims["roomConfig"] = MessageToDict(self.room_config)
+102        return claims
+
+ + + + +
+
+ + Claims( identity: str = '', name: str = '', kind: str = '', metadata: str = '', video: Optional[VideoGrants] = None, sip: Optional[SIPGrants] = None, attributes: Optional[dict[str, str]] = None, sha256: Optional[str] = None, room_preset: Optional[str] = None, room_config: Optional[room.RoomConfiguration] = None) + + +
+ + + + +
+
+
+ identity: str = +'' + + +
+ + + + +
+
+
+ name: str = +'' + + +
+ + + + +
+
+
+ kind: str = +'' + + +
+ + + + +
+
+
+ metadata: str = +'' + + +
+ + + + +
+
+
+ video: Optional[VideoGrants] = +None + + +
+ + + + +
+
+
+ sip: Optional[SIPGrants] = +None + + +
+ + + + +
+
+
+ attributes: Optional[dict[str, str]] = +None + + +
+ + + + +
+
+
+ sha256: Optional[str] = +None + + +
+ + + + +
+
+
+ room_preset: Optional[str] = +None + + +
+ + + + +
+
+
+ room_config: Optional[room.RoomConfiguration] = +None + + +
+ + + + +
+
+ +
+ + def + asdict(self) -> dict: + + + +
+ +
 90    def asdict(self) -> dict:
+ 91        # in order to produce minimal JWT size, exclude None or empty values
+ 92        claims = dataclasses.asdict(
+ 93            self,
+ 94            dict_factory=lambda items: {
+ 95                snake_to_lower_camel(k): v
+ 96                for k, v in items
+ 97                if v is not None and v != ""
+ 98            },
+ 99        )
+100        if self.room_config:
+101            claims["roomConfig"] = MessageToDict(self.room_config)
+102        return claims
+
+ + + + +
+
+
+ +
+ + class + AccessToken: + + + +
+ +
105class AccessToken:
+106    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
+107
+108    def __init__(
+109        self,
+110        api_key: Optional[str] = None,
+111        api_secret: Optional[str] = None,
+112    ) -> None:
+113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+115
+116        if not api_key or not api_secret:
+117            raise ValueError("api_key and api_secret must be set")
+118
+119        self.api_key = api_key  # iss
+120        self.api_secret = api_secret
+121        self.claims = Claims()
+122
+123        # default jwt claims
+124        self.identity = ""  # sub
+125        self.ttl = DEFAULT_TTL  # exp
+126
+127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
+128        self.ttl = ttl
+129        return self
+130
+131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
+132        self.claims.video = grants
+133        return self
+134
+135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
+136        self.claims.sip = grants
+137        return self
+138
+139    def with_identity(self, identity: str) -> "AccessToken":
+140        self.identity = identity
+141        return self
+142
+143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
+144        self.claims.kind = kind
+145        return self
+146
+147    def with_name(self, name: str) -> "AccessToken":
+148        self.claims.name = name
+149        return self
+150
+151    def with_metadata(self, metadata: str) -> "AccessToken":
+152        self.claims.metadata = metadata
+153        return self
+154
+155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
+156        self.claims.attributes = attributes
+157        return self
+158
+159    def with_sha256(self, sha256: str) -> "AccessToken":
+160        self.claims.sha256 = sha256
+161        return self
+162
+163    def with_room_preset(self, preset: str) -> "AccessToken":
+164        self.claims.room_preset = preset
+165        return self
+166
+167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
+168        self.claims.room_config = config
+169        return self
+170
+171    def to_jwt(self) -> str:
+172        video = self.claims.video
+173        if video and video.room_join and (not self.identity or not video.room):
+174            raise ValueError("identity and room must be set when joining a room")
+175
+176        # we want to exclude None values from the token
+177        jwt_claims = self.claims.asdict()
+178        jwt_claims.update(
+179            {
+180                "sub": self.identity,
+181                "iss": self.api_key,
+182                "nbf": calendar.timegm(
+183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
+184                ),
+185                "exp": calendar.timegm(
+186                    (
+187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
+188                    ).utctimetuple()
+189                ),
+190            }
+191        )
+192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
+
+ + + + +
+ +
+ + AccessToken(api_key: Optional[str] = None, api_secret: Optional[str] = None) + + + +
+ +
108    def __init__(
+109        self,
+110        api_key: Optional[str] = None,
+111        api_secret: Optional[str] = None,
+112    ) -> None:
+113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+115
+116        if not api_key or not api_secret:
+117            raise ValueError("api_key and api_secret must be set")
+118
+119        self.api_key = api_key  # iss
+120        self.api_secret = api_secret
+121        self.claims = Claims()
+122
+123        # default jwt claims
+124        self.identity = ""  # sub
+125        self.ttl = DEFAULT_TTL  # exp
+
+ + + + +
+
+
+ ParticipantKind = +typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent'] + + +
+ + + + +
+
+
+ api_key + + +
+ + + + +
+
+
+ api_secret + + +
+ + + + +
+
+
+ claims + + +
+ + + + +
+
+
+ identity + + +
+ + + + +
+
+
+ ttl + + +
+ + + + +
+
+ +
+ + def + with_ttl(self, ttl: datetime.timedelta) -> AccessToken: + + + +
+ +
127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
+128        self.ttl = ttl
+129        return self
+
+ + + + +
+
+ +
+ + def + with_grants( self, grants: VideoGrants) -> AccessToken: + + + +
+ +
131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
+132        self.claims.video = grants
+133        return self
+
+ + + + +
+
+ +
+ + def + with_sip_grants( self, grants: SIPGrants) -> AccessToken: + + + +
+ +
135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
+136        self.claims.sip = grants
+137        return self
+
+ + + + +
+
+ +
+ + def + with_identity(self, identity: str) -> AccessToken: + + + +
+ +
139    def with_identity(self, identity: str) -> "AccessToken":
+140        self.identity = identity
+141        return self
+
+ + + + +
+
+ +
+ + def + with_kind( self, kind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> AccessToken: + + + +
+ +
143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
+144        self.claims.kind = kind
+145        return self
+
+ + + + +
+
+ +
+ + def + with_name(self, name: str) -> AccessToken: + + + +
+ +
147    def with_name(self, name: str) -> "AccessToken":
+148        self.claims.name = name
+149        return self
+
+ + + + +
+
+ +
+ + def + with_metadata(self, metadata: str) -> AccessToken: + + + +
+ +
151    def with_metadata(self, metadata: str) -> "AccessToken":
+152        self.claims.metadata = metadata
+153        return self
+
+ + + + +
+
+ +
+ + def + with_attributes(self, attributes: dict[str, str]) -> AccessToken: + + + +
+ +
155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
+156        self.claims.attributes = attributes
+157        return self
+
+ + + + +
+
+ +
+ + def + with_sha256(self, sha256: str) -> AccessToken: + + + +
+ +
159    def with_sha256(self, sha256: str) -> "AccessToken":
+160        self.claims.sha256 = sha256
+161        return self
+
+ + + + +
+
+ +
+ + def + with_room_preset(self, preset: str) -> AccessToken: + + + +
+ +
163    def with_room_preset(self, preset: str) -> "AccessToken":
+164        self.claims.room_preset = preset
+165        return self
+
+ + + + +
+
+ +
+ + def + with_room_config( self, config: room.RoomConfiguration) -> AccessToken: + + + +
+ +
167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
+168        self.claims.room_config = config
+169        return self
+
+ + + + +
+
+ +
+ + def + to_jwt(self) -> str: + + + +
+ +
171    def to_jwt(self) -> str:
+172        video = self.claims.video
+173        if video and video.room_join and (not self.identity or not video.room):
+174            raise ValueError("identity and room must be set when joining a room")
+175
+176        # we want to exclude None values from the token
+177        jwt_claims = self.claims.asdict()
+178        jwt_claims.update(
+179            {
+180                "sub": self.identity,
+181                "iss": self.api_key,
+182                "nbf": calendar.timegm(
+183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
+184                ),
+185                "exp": calendar.timegm(
+186                    (
+187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
+188                    ).utctimetuple()
+189                ),
+190            }
+191        )
+192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
+
+ + + + +
+
+
+ +
+ + class + TokenVerifier: + + + +
+ +
195class TokenVerifier:
+196    def __init__(
+197        self,
+198        api_key: Optional[str] = None,
+199        api_secret: Optional[str] = None,
+200        *,
+201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
+202    ) -> None:
+203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+205
+206        if not api_key or not api_secret:
+207            raise ValueError("api_key and api_secret must be set")
+208
+209        self.api_key = api_key
+210        self.api_secret = api_secret
+211        self._leeway = leeway
+212
+213    def verify(self, token: str) -> Claims:
+214        claims = jwt.decode(
+215            token,
+216            self.api_secret,
+217            issuer=self.api_key,
+218            algorithms=["HS256"],
+219            leeway=self._leeway.total_seconds(),
+220        )
+221
+222        video_dict = claims.get("video", dict())
+223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
+224        video_dict = {
+225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
+226        }
+227        video = VideoGrants(**video_dict)
+228
+229        sip_dict = claims.get("sip", dict())
+230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
+231        sip_dict = {
+232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
+233        }
+234        sip = SIPGrants(**sip_dict)
+235
+236        grant_claims = Claims(
+237            identity=claims.get("sub", ""),
+238            name=claims.get("name", ""),
+239            video=video,
+240            sip=sip,
+241            attributes=claims.get("attributes", {}),
+242            metadata=claims.get("metadata", ""),
+243            sha256=claims.get("sha256", ""),
+244        )
+245
+246        if claims.get("roomPreset"):
+247            grant_claims.room_preset = claims.get("roomPreset")
+248        if claims.get("roomConfig"):
+249            grant_claims.room_config = ParseDict(
+250                claims.get("roomConfig"),
+251                RoomConfiguration(),
+252                ignore_unknown_fields=True,
+253            )
+254
+255        return grant_claims
+
+ + + + +
+ +
+ + TokenVerifier( api_key: Optional[str] = None, api_secret: Optional[str] = None, *, leeway: datetime.timedelta = datetime.timedelta(seconds=60)) + + + +
+ +
196    def __init__(
+197        self,
+198        api_key: Optional[str] = None,
+199        api_secret: Optional[str] = None,
+200        *,
+201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
+202    ) -> None:
+203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+205
+206        if not api_key or not api_secret:
+207            raise ValueError("api_key and api_secret must be set")
+208
+209        self.api_key = api_key
+210        self.api_secret = api_secret
+211        self._leeway = leeway
+
+ + + + +
+
+
+ api_key + + +
+ + + + +
+
+
+ api_secret + + +
+ + + + +
+
+ +
+ + def + verify(self, token: str) -> Claims: + + + +
+ +
213    def verify(self, token: str) -> Claims:
+214        claims = jwt.decode(
+215            token,
+216            self.api_secret,
+217            issuer=self.api_key,
+218            algorithms=["HS256"],
+219            leeway=self._leeway.total_seconds(),
+220        )
+221
+222        video_dict = claims.get("video", dict())
+223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
+224        video_dict = {
+225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
+226        }
+227        video = VideoGrants(**video_dict)
+228
+229        sip_dict = claims.get("sip", dict())
+230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
+231        sip_dict = {
+232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
+233        }
+234        sip = SIPGrants(**sip_dict)
+235
+236        grant_claims = Claims(
+237            identity=claims.get("sub", ""),
+238            name=claims.get("name", ""),
+239            video=video,
+240            sip=sip,
+241            attributes=claims.get("attributes", {}),
+242            metadata=claims.get("metadata", ""),
+243            sha256=claims.get("sha256", ""),
+244        )
+245
+246        if claims.get("roomPreset"):
+247            grant_claims.room_preset = claims.get("roomPreset")
+248        if claims.get("roomConfig"):
+249            grant_claims.room_config = ParseDict(
+250                claims.get("roomConfig"),
+251                RoomConfiguration(),
+252                ignore_unknown_fields=True,
+253            )
+254
+255        return grant_claims
+
+ + + + +
+
+
+ +
+ + def + camel_to_snake(t: str): + + + +
+ +
258def camel_to_snake(t: str):
+259    return re.sub(r"(?<!^)(?=[A-Z])", "_", t).lower()
+
+ + + + +
+
+ +
+ + def + snake_to_lower_camel(t: str): + + + +
+ +
262def snake_to_lower_camel(t: str):
+263    return "".join(
+264        word.capitalize() if i else word for i, word in enumerate(t.split("_"))
+265    )
+
+ + + + +
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/agent_dispatch_service.html b/docs/livekit/api/agent_dispatch_service.html new file mode 100644 index 00000000..2590971f --- /dev/null +++ b/docs/livekit/api/agent_dispatch_service.html @@ -0,0 +1,743 @@ + + + + + + + livekit.api.agent_dispatch_service API documentation + + + + + + + + + +
+
+

+livekit.api.agent_dispatch_service

+ + + + + + +
  1import aiohttp
+  2from typing import Optional
+  3from livekit.protocol.agent_dispatch import CreateAgentDispatchRequest, AgentDispatch, DeleteAgentDispatchRequest, ListAgentDispatchRequest, ListAgentDispatchResponse
+  4from ._service import Service
+  5from .access_token import VideoGrants
+  6
+  7SVC = "AgentDispatchService"
+  8"""@private"""
+  9
+ 10
+ 11class AgentDispatchService(Service):
+ 12    """Manage agent dispatches. Service APIs require roomAdmin permissions.
+ 13
+ 14    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 15
+ 16    ```python
+ 17    from livekit import api
+ 18    lkapi = api.LiveKitAPI()
+ 19    agent_dispatch = lkapi.agent_dispatch
+ 20    ```
+ 21    """
+ 22
+ 23    def __init__(
+ 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 25    ):
+ 26        super().__init__(session, url, api_key, api_secret)
+ 27
+ 28    async def create_dispatch(
+ 29        self, req: CreateAgentDispatchRequest
+ 30    ) -> AgentDispatch:
+ 31        """Create an explicit dispatch for an agent to join a room.
+ 32
+ 33        To use explicit dispatch, your agent must be registered with an `agentName`.
+ 34
+ 35        Args:
+ 36            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
+ 37
+ 38        Returns:
+ 39            AgentDispatch: The created agent dispatch object
+ 40        """
+ 41        return await self._client.request(
+ 42            SVC,
+ 43            "CreateDispatch",
+ 44            req,
+ 45            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
+ 46            AgentDispatch,
+ 47        )
+ 48
+ 49    async def delete_dispatch(
+ 50        self, dispatch_id: str, room_name: str
+ 51    ) -> AgentDispatch:
+ 52        """Delete an explicit dispatch for an agent in a room.
+ 53
+ 54        Args:
+ 55            dispatch_id (str): ID of the dispatch to delete
+ 56            room_name (str): Name of the room containing the dispatch
+ 57
+ 58        Returns:
+ 59            AgentDispatch: The deleted agent dispatch object
+ 60        """
+ 61        return await self._client.request(
+ 62            SVC,
+ 63            "DeleteDispatch",
+ 64            DeleteAgentDispatchRequest(
+ 65                dispatch_id=dispatch_id,
+ 66                room=room_name,
+ 67            ),
+ 68            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+ 69            AgentDispatch,
+ 70        )
+ 71
+ 72    async def list_dispatch(
+ 73        self, room_name: str
+ 74    ) -> list[AgentDispatch]:
+ 75        """List all agent dispatches in a room.
+ 76
+ 77        Args:
+ 78            room_name (str): Name of the room to list dispatches from
+ 79
+ 80        Returns:
+ 81            list[AgentDispatch]: List of agent dispatch objects in the room
+ 82        """
+ 83        res = await self._client.request(
+ 84            SVC,
+ 85            "ListDispatch",
+ 86            ListAgentDispatchRequest(room=room_name),
+ 87            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+ 88            ListAgentDispatchResponse,
+ 89        )
+ 90        return list(res.agent_dispatches)
+ 91
+ 92    async def get_dispatch(
+ 93        self, dispatch_id: str, room_name: str
+ 94    ) -> Optional[AgentDispatch]:
+ 95        """Get an Agent dispatch by ID
+ 96
+ 97        Args:
+ 98            dispatch_id (str): ID of the dispatch to retrieve
+ 99            room_name (str): Name of the room containing the dispatch
+100
+101        Returns:
+102            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
+103        """
+104        res = await self._client.request(
+105            SVC,
+106            "ListDispatch",
+107            ListAgentDispatchRequest(
+108                dispatch_id=dispatch_id, room=room_name
+109            ),
+110            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+111            ListAgentDispatchResponse,
+112        )
+113        if len(res.agent_dispatches) > 0:
+114            return res.agent_dispatches[0]
+115        return None
+
+ + +
+
+ +
+ + class + AgentDispatchService(livekit.api._service.Service): + + + +
+ +
 12class AgentDispatchService(Service):
+ 13    """Manage agent dispatches. Service APIs require roomAdmin permissions.
+ 14
+ 15    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 16
+ 17    ```python
+ 18    from livekit import api
+ 19    lkapi = api.LiveKitAPI()
+ 20    agent_dispatch = lkapi.agent_dispatch
+ 21    ```
+ 22    """
+ 23
+ 24    def __init__(
+ 25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 26    ):
+ 27        super().__init__(session, url, api_key, api_secret)
+ 28
+ 29    async def create_dispatch(
+ 30        self, req: CreateAgentDispatchRequest
+ 31    ) -> AgentDispatch:
+ 32        """Create an explicit dispatch for an agent to join a room.
+ 33
+ 34        To use explicit dispatch, your agent must be registered with an `agentName`.
+ 35
+ 36        Args:
+ 37            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
+ 38
+ 39        Returns:
+ 40            AgentDispatch: The created agent dispatch object
+ 41        """
+ 42        return await self._client.request(
+ 43            SVC,
+ 44            "CreateDispatch",
+ 45            req,
+ 46            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
+ 47            AgentDispatch,
+ 48        )
+ 49
+ 50    async def delete_dispatch(
+ 51        self, dispatch_id: str, room_name: str
+ 52    ) -> AgentDispatch:
+ 53        """Delete an explicit dispatch for an agent in a room.
+ 54
+ 55        Args:
+ 56            dispatch_id (str): ID of the dispatch to delete
+ 57            room_name (str): Name of the room containing the dispatch
+ 58
+ 59        Returns:
+ 60            AgentDispatch: The deleted agent dispatch object
+ 61        """
+ 62        return await self._client.request(
+ 63            SVC,
+ 64            "DeleteDispatch",
+ 65            DeleteAgentDispatchRequest(
+ 66                dispatch_id=dispatch_id,
+ 67                room=room_name,
+ 68            ),
+ 69            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+ 70            AgentDispatch,
+ 71        )
+ 72
+ 73    async def list_dispatch(
+ 74        self, room_name: str
+ 75    ) -> list[AgentDispatch]:
+ 76        """List all agent dispatches in a room.
+ 77
+ 78        Args:
+ 79            room_name (str): Name of the room to list dispatches from
+ 80
+ 81        Returns:
+ 82            list[AgentDispatch]: List of agent dispatch objects in the room
+ 83        """
+ 84        res = await self._client.request(
+ 85            SVC,
+ 86            "ListDispatch",
+ 87            ListAgentDispatchRequest(room=room_name),
+ 88            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+ 89            ListAgentDispatchResponse,
+ 90        )
+ 91        return list(res.agent_dispatches)
+ 92
+ 93    async def get_dispatch(
+ 94        self, dispatch_id: str, room_name: str
+ 95    ) -> Optional[AgentDispatch]:
+ 96        """Get an Agent dispatch by ID
+ 97
+ 98        Args:
+ 99            dispatch_id (str): ID of the dispatch to retrieve
+100            room_name (str): Name of the room containing the dispatch
+101
+102        Returns:
+103            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
+104        """
+105        res = await self._client.request(
+106            SVC,
+107            "ListDispatch",
+108            ListAgentDispatchRequest(
+109                dispatch_id=dispatch_id, room=room_name
+110            ),
+111            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+112            ListAgentDispatchResponse,
+113        )
+114        if len(res.agent_dispatches) > 0:
+115            return res.agent_dispatches[0]
+116        return None
+
+ + +

Manage agent dispatches. Service APIs require roomAdmin permissions.

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+agent_dispatch = lkapi.agent_dispatch
+
+
+
+ + +
+ +
+ + AgentDispatchService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) + + + +
+ +
24    def __init__(
+25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+26    ):
+27        super().__init__(session, url, api_key, api_secret)
+
+ + + + +
+
+ +
+ + async def + create_dispatch( self, req: agent_dispatch.CreateAgentDispatchRequest) -> agent_dispatch.AgentDispatch: + + + +
+ +
29    async def create_dispatch(
+30        self, req: CreateAgentDispatchRequest
+31    ) -> AgentDispatch:
+32        """Create an explicit dispatch for an agent to join a room.
+33
+34        To use explicit dispatch, your agent must be registered with an `agentName`.
+35
+36        Args:
+37            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
+38
+39        Returns:
+40            AgentDispatch: The created agent dispatch object
+41        """
+42        return await self._client.request(
+43            SVC,
+44            "CreateDispatch",
+45            req,
+46            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
+47            AgentDispatch,
+48        )
+
+ + +

Create an explicit dispatch for an agent to join a room.

+ +

To use explicit dispatch, your agent must be registered with an agentName.

+ +
Arguments:
+ +
    +
  • req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
  • +
+ +
Returns:
+ +
+

AgentDispatch: The created agent dispatch object

+
+
+ + +
+
+ +
+ + async def + delete_dispatch(self, dispatch_id: str, room_name: str) -> agent_dispatch.AgentDispatch: + + + +
+ +
50    async def delete_dispatch(
+51        self, dispatch_id: str, room_name: str
+52    ) -> AgentDispatch:
+53        """Delete an explicit dispatch for an agent in a room.
+54
+55        Args:
+56            dispatch_id (str): ID of the dispatch to delete
+57            room_name (str): Name of the room containing the dispatch
+58
+59        Returns:
+60            AgentDispatch: The deleted agent dispatch object
+61        """
+62        return await self._client.request(
+63            SVC,
+64            "DeleteDispatch",
+65            DeleteAgentDispatchRequest(
+66                dispatch_id=dispatch_id,
+67                room=room_name,
+68            ),
+69            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+70            AgentDispatch,
+71        )
+
+ + +

Delete an explicit dispatch for an agent in a room.

+ +
Arguments:
+ +
    +
  • dispatch_id (str): ID of the dispatch to delete
  • +
  • room_name (str): Name of the room containing the dispatch
  • +
+ +
Returns:
+ +
+

AgentDispatch: The deleted agent dispatch object

+
+
+ + +
+
+ +
+ + async def + list_dispatch(self, room_name: str) -> list[agent_dispatch.AgentDispatch]: + + + +
+ +
73    async def list_dispatch(
+74        self, room_name: str
+75    ) -> list[AgentDispatch]:
+76        """List all agent dispatches in a room.
+77
+78        Args:
+79            room_name (str): Name of the room to list dispatches from
+80
+81        Returns:
+82            list[AgentDispatch]: List of agent dispatch objects in the room
+83        """
+84        res = await self._client.request(
+85            SVC,
+86            "ListDispatch",
+87            ListAgentDispatchRequest(room=room_name),
+88            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+89            ListAgentDispatchResponse,
+90        )
+91        return list(res.agent_dispatches)
+
+ + +

List all agent dispatches in a room.

+ +
Arguments:
+ +
    +
  • room_name (str): Name of the room to list dispatches from
  • +
+ +
Returns:
+ +
+

list[AgentDispatch]: List of agent dispatch objects in the room

+
+
+ + +
+
+ +
+ + async def + get_dispatch( self, dispatch_id: str, room_name: str) -> Optional[agent_dispatch.AgentDispatch]: + + + +
+ +
 93    async def get_dispatch(
+ 94        self, dispatch_id: str, room_name: str
+ 95    ) -> Optional[AgentDispatch]:
+ 96        """Get an Agent dispatch by ID
+ 97
+ 98        Args:
+ 99            dispatch_id (str): ID of the dispatch to retrieve
+100            room_name (str): Name of the room containing the dispatch
+101
+102        Returns:
+103            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
+104        """
+105        res = await self._client.request(
+106            SVC,
+107            "ListDispatch",
+108            ListAgentDispatchRequest(
+109                dispatch_id=dispatch_id, room=room_name
+110            ),
+111            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
+112            ListAgentDispatchResponse,
+113        )
+114        if len(res.agent_dispatches) > 0:
+115            return res.agent_dispatches[0]
+116        return None
+
+ + +

Get an Agent dispatch by ID

+ +
Arguments:
+ +
    +
  • dispatch_id (str): ID of the dispatch to retrieve
  • +
  • room_name (str): Name of the room containing the dispatch
  • +
+ +
Returns:
+ +
+

Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise

+
+
+ + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/egress_service.html b/docs/livekit/api/egress_service.html new file mode 100644 index 00000000..f215e47c --- /dev/null +++ b/docs/livekit/api/egress_service.html @@ -0,0 +1,810 @@ + + + + + + + livekit.api.egress_service API documentation + + + + + + + + + +
+
+

+livekit.api.egress_service

+ + + + + + +
  1import aiohttp
+  2from livekit.protocol.egress import RoomCompositeEgressRequest, WebEgressRequest, ParticipantEgressRequest, TrackCompositeEgressRequest, TrackEgressRequest, UpdateLayoutRequest, UpdateStreamRequest, ListEgressRequest, StopEgressRequest, EgressInfo, ListEgressResponse
+  3from ._service import Service
+  4from .access_token import VideoGrants
+  5
+  6SVC = "Egress"
+  7"""@private"""
+  8
+  9class EgressService(Service):
+ 10    """Client for LiveKit Egress Service API
+ 11    
+ 12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 13    
+ 14    ```python
+ 15    from livekit import api
+ 16    lkapi = api.LiveKitAPI()
+ 17    egress = lkapi.egress
+ 18    ```
+ 19    
+ 20    Also see https://docs.livekit.io/home/egress/overview/
+ 21    """
+ 22    def __init__(
+ 23        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 24    ):
+ 25        super().__init__(session, url, api_key, api_secret)
+ 26
+ 27    async def start_room_composite_egress(
+ 28        self, start: RoomCompositeEgressRequest
+ 29    ) -> EgressInfo:
+ 30        return await self._client.request(
+ 31            SVC,
+ 32            "StartRoomCompositeEgress",
+ 33            start,
+ 34            self._auth_header(VideoGrants(room_record=True)),
+ 35            EgressInfo,
+ 36        )
+ 37
+ 38    async def start_web_egress(
+ 39        self, start: WebEgressRequest
+ 40    ) -> EgressInfo:
+ 41        return await self._client.request(
+ 42            SVC,
+ 43            "StartWebEgress",
+ 44            start,
+ 45            self._auth_header(VideoGrants(room_record=True)),
+ 46            EgressInfo,
+ 47        )
+ 48
+ 49    async def start_participant_egress(
+ 50        self, start: ParticipantEgressRequest
+ 51    ) -> EgressInfo:
+ 52        return await self._client.request(
+ 53            SVC,
+ 54            "StartParticipantEgress",
+ 55            start,
+ 56            self._auth_header(VideoGrants(room_record=True)),
+ 57            EgressInfo,
+ 58        )
+ 59
+ 60    async def start_track_composite_egress(
+ 61        self, start: TrackCompositeEgressRequest
+ 62    ) -> EgressInfo:
+ 63        return await self._client.request(
+ 64            SVC,
+ 65            "StartTrackCompositeEgress",
+ 66            start,
+ 67            self._auth_header(VideoGrants(room_record=True)),
+ 68            EgressInfo,
+ 69        )
+ 70
+ 71    async def start_track_egress(
+ 72        self, start: TrackEgressRequest
+ 73    ) -> EgressInfo:
+ 74        return await self._client.request(
+ 75            SVC,
+ 76            "StartTrackEgress",
+ 77            start,
+ 78            self._auth_header(VideoGrants(room_record=True)),
+ 79            EgressInfo,
+ 80        )
+ 81
+ 82    async def update_layout(
+ 83        self, update: UpdateLayoutRequest
+ 84    ) -> EgressInfo:
+ 85        return await self._client.request(
+ 86            SVC,
+ 87            "UpdateLayout",
+ 88            update,
+ 89            self._auth_header(VideoGrants(room_record=True)),
+ 90            EgressInfo,
+ 91        )
+ 92
+ 93    async def update_stream(
+ 94        self, update: UpdateStreamRequest
+ 95    ) -> EgressInfo:
+ 96        return await self._client.request(
+ 97            SVC,
+ 98            "UpdateStream",
+ 99            update,
+100            self._auth_header(VideoGrants(room_record=True)),
+101            EgressInfo,
+102        )
+103
+104    async def list_egress(
+105        self, list: ListEgressRequest
+106    ) -> ListEgressResponse:
+107        return await self._client.request(
+108            SVC,
+109            "ListEgress",
+110            list,
+111            self._auth_header(VideoGrants(room_record=True)),
+112            ListEgressResponse,
+113        )
+114
+115    async def stop_egress(
+116        self, stop: StopEgressRequest
+117    ) -> EgressInfo:
+118        return await self._client.request(
+119            SVC,
+120            "StopEgress",
+121            stop,
+122            self._auth_header(VideoGrants(room_record=True)),
+123            EgressInfo,
+124        )
+
+ + +
+
+ +
+ + class + EgressService(livekit.api._service.Service): + + + +
+ +
 10class EgressService(Service):
+ 11    """Client for LiveKit Egress Service API
+ 12    
+ 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 14    
+ 15    ```python
+ 16    from livekit import api
+ 17    lkapi = api.LiveKitAPI()
+ 18    egress = lkapi.egress
+ 19    ```
+ 20    
+ 21    Also see https://docs.livekit.io/home/egress/overview/
+ 22    """
+ 23    def __init__(
+ 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 25    ):
+ 26        super().__init__(session, url, api_key, api_secret)
+ 27
+ 28    async def start_room_composite_egress(
+ 29        self, start: RoomCompositeEgressRequest
+ 30    ) -> EgressInfo:
+ 31        return await self._client.request(
+ 32            SVC,
+ 33            "StartRoomCompositeEgress",
+ 34            start,
+ 35            self._auth_header(VideoGrants(room_record=True)),
+ 36            EgressInfo,
+ 37        )
+ 38
+ 39    async def start_web_egress(
+ 40        self, start: WebEgressRequest
+ 41    ) -> EgressInfo:
+ 42        return await self._client.request(
+ 43            SVC,
+ 44            "StartWebEgress",
+ 45            start,
+ 46            self._auth_header(VideoGrants(room_record=True)),
+ 47            EgressInfo,
+ 48        )
+ 49
+ 50    async def start_participant_egress(
+ 51        self, start: ParticipantEgressRequest
+ 52    ) -> EgressInfo:
+ 53        return await self._client.request(
+ 54            SVC,
+ 55            "StartParticipantEgress",
+ 56            start,
+ 57            self._auth_header(VideoGrants(room_record=True)),
+ 58            EgressInfo,
+ 59        )
+ 60
+ 61    async def start_track_composite_egress(
+ 62        self, start: TrackCompositeEgressRequest
+ 63    ) -> EgressInfo:
+ 64        return await self._client.request(
+ 65            SVC,
+ 66            "StartTrackCompositeEgress",
+ 67            start,
+ 68            self._auth_header(VideoGrants(room_record=True)),
+ 69            EgressInfo,
+ 70        )
+ 71
+ 72    async def start_track_egress(
+ 73        self, start: TrackEgressRequest
+ 74    ) -> EgressInfo:
+ 75        return await self._client.request(
+ 76            SVC,
+ 77            "StartTrackEgress",
+ 78            start,
+ 79            self._auth_header(VideoGrants(room_record=True)),
+ 80            EgressInfo,
+ 81        )
+ 82
+ 83    async def update_layout(
+ 84        self, update: UpdateLayoutRequest
+ 85    ) -> EgressInfo:
+ 86        return await self._client.request(
+ 87            SVC,
+ 88            "UpdateLayout",
+ 89            update,
+ 90            self._auth_header(VideoGrants(room_record=True)),
+ 91            EgressInfo,
+ 92        )
+ 93
+ 94    async def update_stream(
+ 95        self, update: UpdateStreamRequest
+ 96    ) -> EgressInfo:
+ 97        return await self._client.request(
+ 98            SVC,
+ 99            "UpdateStream",
+100            update,
+101            self._auth_header(VideoGrants(room_record=True)),
+102            EgressInfo,
+103        )
+104
+105    async def list_egress(
+106        self, list: ListEgressRequest
+107    ) -> ListEgressResponse:
+108        return await self._client.request(
+109            SVC,
+110            "ListEgress",
+111            list,
+112            self._auth_header(VideoGrants(room_record=True)),
+113            ListEgressResponse,
+114        )
+115
+116    async def stop_egress(
+117        self, stop: StopEgressRequest
+118    ) -> EgressInfo:
+119        return await self._client.request(
+120            SVC,
+121            "StopEgress",
+122            stop,
+123            self._auth_header(VideoGrants(room_record=True)),
+124            EgressInfo,
+125        )
+
+ + +

Client for LiveKit Egress Service API

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+egress = lkapi.egress
+
+
+ +

Also see https://docs.livekit.io/home/egress/overview/

+
+ + +
+ +
+ + EgressService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) + + + +
+ +
23    def __init__(
+24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+25    ):
+26        super().__init__(session, url, api_key, api_secret)
+
+ + + + +
+
+ +
+ + async def + start_room_composite_egress(self, start: egress.RoomCompositeEgressRequest) -> egress.EgressInfo: + + + +
+ +
28    async def start_room_composite_egress(
+29        self, start: RoomCompositeEgressRequest
+30    ) -> EgressInfo:
+31        return await self._client.request(
+32            SVC,
+33            "StartRoomCompositeEgress",
+34            start,
+35            self._auth_header(VideoGrants(room_record=True)),
+36            EgressInfo,
+37        )
+
+ + + + +
+
+ +
+ + async def + start_web_egress(self, start: egress.WebEgressRequest) -> egress.EgressInfo: + + + +
+ +
39    async def start_web_egress(
+40        self, start: WebEgressRequest
+41    ) -> EgressInfo:
+42        return await self._client.request(
+43            SVC,
+44            "StartWebEgress",
+45            start,
+46            self._auth_header(VideoGrants(room_record=True)),
+47            EgressInfo,
+48        )
+
+ + + + +
+
+ +
+ + async def + start_participant_egress(self, start: egress.ParticipantEgressRequest) -> egress.EgressInfo: + + + +
+ +
50    async def start_participant_egress(
+51        self, start: ParticipantEgressRequest
+52    ) -> EgressInfo:
+53        return await self._client.request(
+54            SVC,
+55            "StartParticipantEgress",
+56            start,
+57            self._auth_header(VideoGrants(room_record=True)),
+58            EgressInfo,
+59        )
+
+ + + + +
+
+ +
+ + async def + start_track_composite_egress(self, start: egress.TrackCompositeEgressRequest) -> egress.EgressInfo: + + + +
+ +
61    async def start_track_composite_egress(
+62        self, start: TrackCompositeEgressRequest
+63    ) -> EgressInfo:
+64        return await self._client.request(
+65            SVC,
+66            "StartTrackCompositeEgress",
+67            start,
+68            self._auth_header(VideoGrants(room_record=True)),
+69            EgressInfo,
+70        )
+
+ + + + +
+
+ +
+ + async def + start_track_egress(self, start: egress.TrackEgressRequest) -> egress.EgressInfo: + + + +
+ +
72    async def start_track_egress(
+73        self, start: TrackEgressRequest
+74    ) -> EgressInfo:
+75        return await self._client.request(
+76            SVC,
+77            "StartTrackEgress",
+78            start,
+79            self._auth_header(VideoGrants(room_record=True)),
+80            EgressInfo,
+81        )
+
+ + + + +
+
+ +
+ + async def + update_layout(self, update: egress.UpdateLayoutRequest) -> egress.EgressInfo: + + + +
+ +
83    async def update_layout(
+84        self, update: UpdateLayoutRequest
+85    ) -> EgressInfo:
+86        return await self._client.request(
+87            SVC,
+88            "UpdateLayout",
+89            update,
+90            self._auth_header(VideoGrants(room_record=True)),
+91            EgressInfo,
+92        )
+
+ + + + +
+
+ +
+ + async def + update_stream(self, update: egress.UpdateStreamRequest) -> egress.EgressInfo: + + + +
+ +
 94    async def update_stream(
+ 95        self, update: UpdateStreamRequest
+ 96    ) -> EgressInfo:
+ 97        return await self._client.request(
+ 98            SVC,
+ 99            "UpdateStream",
+100            update,
+101            self._auth_header(VideoGrants(room_record=True)),
+102            EgressInfo,
+103        )
+
+ + + + +
+
+ +
+ + async def + list_egress(self, list: egress.ListEgressRequest) -> egress.ListEgressResponse: + + + +
+ +
105    async def list_egress(
+106        self, list: ListEgressRequest
+107    ) -> ListEgressResponse:
+108        return await self._client.request(
+109            SVC,
+110            "ListEgress",
+111            list,
+112            self._auth_header(VideoGrants(room_record=True)),
+113            ListEgressResponse,
+114        )
+
+ + + + +
+
+ +
+ + async def + stop_egress(self, stop: egress.StopEgressRequest) -> egress.EgressInfo: + + + +
+ +
116    async def stop_egress(
+117        self, stop: StopEgressRequest
+118    ) -> EgressInfo:
+119        return await self._client.request(
+120            SVC,
+121            "StopEgress",
+122            stop,
+123            self._auth_header(VideoGrants(room_record=True)),
+124            EgressInfo,
+125        )
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/ingress_service.html b/docs/livekit/api/ingress_service.html new file mode 100644 index 00000000..e75cb433 --- /dev/null +++ b/docs/livekit/api/ingress_service.html @@ -0,0 +1,550 @@ + + + + + + + livekit.api.ingress_service API documentation + + + + + + + + + +
+
+

+livekit.api.ingress_service

+ + + + + + +
 1import aiohttp
+ 2from livekit.protocol.ingress import CreateIngressRequest, IngressInfo, UpdateIngressRequest, ListIngressRequest, DeleteIngressRequest, ListIngressResponse
+ 3from ._service import Service
+ 4from .access_token import VideoGrants
+ 5
+ 6SVC = "Ingress"
+ 7"""@private"""
+ 8
+ 9class IngressService(Service):
+10    """Client for LiveKit Ingress Service API
+11    
+12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+13    
+14    ```python
+15    from livekit import api
+16    lkapi = api.LiveKitAPI()
+17    ingress = lkapi.ingress
+18    ```
+19    
+20    Also see https://docs.livekit.io/home/ingress/overview/
+21    """
+22    def __init__(
+23        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+24    ):
+25        super().__init__(session, url, api_key, api_secret)
+26
+27    async def create_ingress(
+28        self, create: CreateIngressRequest
+29    ) -> IngressInfo:
+30        return await self._client.request(
+31            SVC,
+32            "CreateIngress",
+33            create,
+34            self._auth_header(VideoGrants(ingress_admin=True)),
+35            IngressInfo,
+36        )
+37
+38    async def update_ingress(
+39        self, update: UpdateIngressRequest
+40    ) -> IngressInfo:
+41        return await self._client.request(
+42            SVC,
+43            "UpdateIngress",
+44            update,
+45            self._auth_header(VideoGrants(ingress_admin=True)),
+46            IngressInfo,
+47        )
+48
+49    async def list_ingress(
+50        self, list: ListIngressRequest
+51    ) -> ListIngressResponse:
+52        return await self._client.request(
+53            SVC,
+54            "ListIngress",
+55            list,
+56            self._auth_header(VideoGrants(ingress_admin=True)),
+57            ListIngressResponse,
+58        )
+59
+60    async def delete_ingress(
+61        self, delete: DeleteIngressRequest
+62    ) -> IngressInfo:
+63        return await self._client.request(
+64            SVC,
+65            "DeleteIngress",
+66            delete,
+67            self._auth_header(VideoGrants(ingress_admin=True)),
+68            IngressInfo,
+69        )
+
+ + +
+
+ +
+ + class + IngressService(livekit.api._service.Service): + + + +
+ +
10class IngressService(Service):
+11    """Client for LiveKit Ingress Service API
+12    
+13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+14    
+15    ```python
+16    from livekit import api
+17    lkapi = api.LiveKitAPI()
+18    ingress = lkapi.ingress
+19    ```
+20    
+21    Also see https://docs.livekit.io/home/ingress/overview/
+22    """
+23    def __init__(
+24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+25    ):
+26        super().__init__(session, url, api_key, api_secret)
+27
+28    async def create_ingress(
+29        self, create: CreateIngressRequest
+30    ) -> IngressInfo:
+31        return await self._client.request(
+32            SVC,
+33            "CreateIngress",
+34            create,
+35            self._auth_header(VideoGrants(ingress_admin=True)),
+36            IngressInfo,
+37        )
+38
+39    async def update_ingress(
+40        self, update: UpdateIngressRequest
+41    ) -> IngressInfo:
+42        return await self._client.request(
+43            SVC,
+44            "UpdateIngress",
+45            update,
+46            self._auth_header(VideoGrants(ingress_admin=True)),
+47            IngressInfo,
+48        )
+49
+50    async def list_ingress(
+51        self, list: ListIngressRequest
+52    ) -> ListIngressResponse:
+53        return await self._client.request(
+54            SVC,
+55            "ListIngress",
+56            list,
+57            self._auth_header(VideoGrants(ingress_admin=True)),
+58            ListIngressResponse,
+59        )
+60
+61    async def delete_ingress(
+62        self, delete: DeleteIngressRequest
+63    ) -> IngressInfo:
+64        return await self._client.request(
+65            SVC,
+66            "DeleteIngress",
+67            delete,
+68            self._auth_header(VideoGrants(ingress_admin=True)),
+69            IngressInfo,
+70        )
+
+ + +

Client for LiveKit Ingress Service API

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+ingress = lkapi.ingress
+
+
+ +

Also see https://docs.livekit.io/home/ingress/overview/

+
+ + +
+ +
+ + IngressService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) + + + +
+ +
23    def __init__(
+24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+25    ):
+26        super().__init__(session, url, api_key, api_secret)
+
+ + + + +
+
+ +
+ + async def + create_ingress(self, create: ingress.CreateIngressRequest) -> ingress.IngressInfo: + + + +
+ +
28    async def create_ingress(
+29        self, create: CreateIngressRequest
+30    ) -> IngressInfo:
+31        return await self._client.request(
+32            SVC,
+33            "CreateIngress",
+34            create,
+35            self._auth_header(VideoGrants(ingress_admin=True)),
+36            IngressInfo,
+37        )
+
+ + + + +
+
+ +
+ + async def + update_ingress(self, update: ingress.UpdateIngressRequest) -> ingress.IngressInfo: + + + +
+ +
39    async def update_ingress(
+40        self, update: UpdateIngressRequest
+41    ) -> IngressInfo:
+42        return await self._client.request(
+43            SVC,
+44            "UpdateIngress",
+45            update,
+46            self._auth_header(VideoGrants(ingress_admin=True)),
+47            IngressInfo,
+48        )
+
+ + + + +
+
+ +
+ + async def + list_ingress(self, list: ingress.ListIngressRequest) -> ingress.ListIngressResponse: + + + +
+ +
50    async def list_ingress(
+51        self, list: ListIngressRequest
+52    ) -> ListIngressResponse:
+53        return await self._client.request(
+54            SVC,
+55            "ListIngress",
+56            list,
+57            self._auth_header(VideoGrants(ingress_admin=True)),
+58            ListIngressResponse,
+59        )
+
+ + + + +
+
+ +
+ + async def + delete_ingress(self, delete: ingress.DeleteIngressRequest) -> ingress.IngressInfo: + + + +
+ +
61    async def delete_ingress(
+62        self, delete: DeleteIngressRequest
+63    ) -> IngressInfo:
+64        return await self._client.request(
+65            SVC,
+66            "DeleteIngress",
+67            delete,
+68            self._auth_header(VideoGrants(ingress_admin=True)),
+69            IngressInfo,
+70        )
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/livekit_api.html b/docs/livekit/api/livekit_api.html new file mode 100644 index 00000000..5046c192 --- /dev/null +++ b/docs/livekit/api/livekit_api.html @@ -0,0 +1,665 @@ + + + + + + + livekit.api.livekit_api API documentation + + + + + + + + + +
+
+

+livekit.api.livekit_api

+ + + + + + +
 1import aiohttp
+ 2import os
+ 3from .room_service import RoomService
+ 4from .egress_service import EgressService
+ 5from .ingress_service import IngressService
+ 6from .sip_service import SipService
+ 7from .agent_dispatch_service import AgentDispatchService
+ 8from typing import Optional
+ 9
+10
+11class LiveKitAPI:
+12    """LiveKit Server API Client
+13    
+14    This class is the main entrypoint, which exposes all services.
+15
+16    Usage:
+17
+18    ```python
+19    from livekit import api
+20    lkapi = api.LiveKitAPI()
+21    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
+22    ```
+23    """
+24
+25    def __init__(
+26        self,
+27        url: Optional[str] = None,
+28        api_key: Optional[str] = None,
+29        api_secret: Optional[str] = None,
+30        *,
+31        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
+32    ):
+33        """Create a new LiveKitAPI instance.
+34        
+35        Args:
+36            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
+37            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
+38            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
+39            timeout: Request timeout (default: 60 seconds)
+40        """
+41        url = url or os.getenv("LIVEKIT_URL")
+42        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+43        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+44
+45        if not url:
+46            raise ValueError("url must be set")
+47
+48        if not api_key or not api_secret:
+49            raise ValueError("api_key and api_secret must be set")
+50
+51        self._session = aiohttp.ClientSession(timeout=timeout)
+52        self._room = RoomService(self._session, url, api_key, api_secret)
+53        self._ingress = IngressService(self._session, url, api_key, api_secret)
+54        self._egress = EgressService(self._session, url, api_key, api_secret)
+55        self._sip = SipService(self._session, url, api_key, api_secret)
+56        self._agent_dispatch = AgentDispatchService(
+57            self._session, url, api_key, api_secret
+58        )
+59
+60    @property
+61    def agent_dispatch(self) -> AgentDispatchService:
+62        """Instance of the AgentDispatchService
+63        
+64        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
+65        return self._agent_dispatch
+66
+67    @property
+68    def room(self) -> RoomService:
+69        """Instance of the RoomService
+70        
+71        See `livekit.api.room_service.RoomService`"""
+72        return self._room
+73
+74    @property
+75    def ingress(self) -> IngressService:
+76        """Instance of the IngressService
+77        
+78        See `livekit.api.ingress_service.IngressService`"""
+79        return self._ingress
+80
+81    @property
+82    def egress(self) -> EgressService:
+83        """Instance of the EgressService
+84        
+85        See `livekit.api.egress_service.EgressService`"""
+86        return self._egress
+87
+88    @property
+89    def sip(self) -> SipService:
+90        """Instance of the SipService
+91        
+92        See `livekit.api.sip_service.SipService`"""
+93        return self._sip
+94
+95    async def aclose(self):
+96        """@private"""
+97        await self._session.close()
+
+ + +
+
+ +
+ + class + LiveKitAPI: + + + +
+ +
12class LiveKitAPI:
+13    """LiveKit Server API Client
+14    
+15    This class is the main entrypoint, which exposes all services.
+16
+17    Usage:
+18
+19    ```python
+20    from livekit import api
+21    lkapi = api.LiveKitAPI()
+22    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
+23    ```
+24    """
+25
+26    def __init__(
+27        self,
+28        url: Optional[str] = None,
+29        api_key: Optional[str] = None,
+30        api_secret: Optional[str] = None,
+31        *,
+32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
+33    ):
+34        """Create a new LiveKitAPI instance.
+35        
+36        Args:
+37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
+38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
+39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
+40            timeout: Request timeout (default: 60 seconds)
+41        """
+42        url = url or os.getenv("LIVEKIT_URL")
+43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+45
+46        if not url:
+47            raise ValueError("url must be set")
+48
+49        if not api_key or not api_secret:
+50            raise ValueError("api_key and api_secret must be set")
+51
+52        self._session = aiohttp.ClientSession(timeout=timeout)
+53        self._room = RoomService(self._session, url, api_key, api_secret)
+54        self._ingress = IngressService(self._session, url, api_key, api_secret)
+55        self._egress = EgressService(self._session, url, api_key, api_secret)
+56        self._sip = SipService(self._session, url, api_key, api_secret)
+57        self._agent_dispatch = AgentDispatchService(
+58            self._session, url, api_key, api_secret
+59        )
+60
+61    @property
+62    def agent_dispatch(self) -> AgentDispatchService:
+63        """Instance of the AgentDispatchService
+64        
+65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
+66        return self._agent_dispatch
+67
+68    @property
+69    def room(self) -> RoomService:
+70        """Instance of the RoomService
+71        
+72        See `livekit.api.room_service.RoomService`"""
+73        return self._room
+74
+75    @property
+76    def ingress(self) -> IngressService:
+77        """Instance of the IngressService
+78        
+79        See `livekit.api.ingress_service.IngressService`"""
+80        return self._ingress
+81
+82    @property
+83    def egress(self) -> EgressService:
+84        """Instance of the EgressService
+85        
+86        See `livekit.api.egress_service.EgressService`"""
+87        return self._egress
+88
+89    @property
+90    def sip(self) -> SipService:
+91        """Instance of the SipService
+92        
+93        See `livekit.api.sip_service.SipService`"""
+94        return self._sip
+95
+96    async def aclose(self):
+97        """@private"""
+98        await self._session.close()
+
+ + +

LiveKit Server API Client

+ +

This class is the main entrypoint, which exposes all services.

+ +

Usage:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
+
+
+
+ + +
+ +
+ + LiveKitAPI( url: Optional[str] = None, api_key: Optional[str] = None, api_secret: Optional[str] = None, *, timeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5)) + + + +
+ +
26    def __init__(
+27        self,
+28        url: Optional[str] = None,
+29        api_key: Optional[str] = None,
+30        api_secret: Optional[str] = None,
+31        *,
+32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
+33    ):
+34        """Create a new LiveKitAPI instance.
+35        
+36        Args:
+37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
+38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
+39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
+40            timeout: Request timeout (default: 60 seconds)
+41        """
+42        url = url or os.getenv("LIVEKIT_URL")
+43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
+44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
+45
+46        if not url:
+47            raise ValueError("url must be set")
+48
+49        if not api_key or not api_secret:
+50            raise ValueError("api_key and api_secret must be set")
+51
+52        self._session = aiohttp.ClientSession(timeout=timeout)
+53        self._room = RoomService(self._session, url, api_key, api_secret)
+54        self._ingress = IngressService(self._session, url, api_key, api_secret)
+55        self._egress = EgressService(self._session, url, api_key, api_secret)
+56        self._sip = SipService(self._session, url, api_key, api_secret)
+57        self._agent_dispatch = AgentDispatchService(
+58            self._session, url, api_key, api_secret
+59        )
+
+ + +

Create a new LiveKitAPI instance.

+ +
Arguments:
+ +
    +
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • +
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • +
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • +
  • timeout: Request timeout (default: 60 seconds)
  • +
+
+ + +
+
+ +
+ agent_dispatch: livekit.api.agent_dispatch_service.AgentDispatchService + + + +
+ +
61    @property
+62    def agent_dispatch(self) -> AgentDispatchService:
+63        """Instance of the AgentDispatchService
+64        
+65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
+66        return self._agent_dispatch
+
+ + +

Instance of the AgentDispatchService

+ +

See livekit.api.agent_dispatch_service.AgentDispatchService

+
+ + +
+
+ +
+ room: livekit.api.room_service.RoomService + + + +
+ +
68    @property
+69    def room(self) -> RoomService:
+70        """Instance of the RoomService
+71        
+72        See `livekit.api.room_service.RoomService`"""
+73        return self._room
+
+ + +

Instance of the RoomService

+ +

See livekit.api.room_service.RoomService

+
+ + +
+
+ +
+ ingress: livekit.api.ingress_service.IngressService + + + +
+ +
75    @property
+76    def ingress(self) -> IngressService:
+77        """Instance of the IngressService
+78        
+79        See `livekit.api.ingress_service.IngressService`"""
+80        return self._ingress
+
+ + +

Instance of the IngressService

+ +

See livekit.api.ingress_service.IngressService

+
+ + +
+
+ +
+ egress: livekit.api.egress_service.EgressService + + + +
+ +
82    @property
+83    def egress(self) -> EgressService:
+84        """Instance of the EgressService
+85        
+86        See `livekit.api.egress_service.EgressService`"""
+87        return self._egress
+
+ + +

Instance of the EgressService

+ +

See livekit.api.egress_service.EgressService

+
+ + +
+
+ +
+ sip: livekit.api.sip_service.SipService + + + +
+ +
89    @property
+90    def sip(self) -> SipService:
+91        """Instance of the SipService
+92        
+93        See `livekit.api.sip_service.SipService`"""
+94        return self._sip
+
+ + +

Instance of the SipService

+ +

See livekit.api.sip_service.SipService

+
+ + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/room_service.html b/docs/livekit/api/room_service.html new file mode 100644 index 00000000..3f96affc --- /dev/null +++ b/docs/livekit/api/room_service.html @@ -0,0 +1,882 @@ + + + + + + + livekit.api.room_service API documentation + + + + + + + + + +
+
+

+livekit.api.room_service

+ + + + + + +
  1import aiohttp
+  2from livekit.protocol.room import CreateRoomRequest, ListRoomsRequest, DeleteRoomRequest, ListRoomsResponse, DeleteRoomResponse, ListParticipantsRequest, ListParticipantsResponse, RoomParticipantIdentity, MuteRoomTrackRequest, MuteRoomTrackResponse, UpdateParticipantRequest, UpdateSubscriptionsRequest, SendDataRequest, SendDataResponse, UpdateRoomMetadataRequest, RemoveParticipantResponse, UpdateSubscriptionsResponse
+  3from livekit.protocol.models import Room, ParticipantInfo
+  4from ._service import Service
+  5from .access_token import VideoGrants
+  6
+  7SVC = "RoomService"
+  8"""@private"""
+  9
+ 10class RoomService(Service):
+ 11    """Client for LiveKit RoomService API
+ 12    
+ 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 14    
+ 15    ```python
+ 16    from livekit import api
+ 17    lkapi = api.LiveKitAPI()
+ 18    room_service = lkapi.room
+ 19    ```
+ 20    
+ 21    Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/
+ 22    """
+ 23    def __init__(
+ 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 25    ):
+ 26        super().__init__(session, url, api_key, api_secret)
+ 27
+ 28    async def create_room(self, create: CreateRoomRequest) -> Room:
+ 29        return await self._client.request(
+ 30            SVC,
+ 31            "CreateRoom",
+ 32            create,
+ 33            self._auth_header(VideoGrants(room_create=True)),
+ 34            Room,
+ 35        )
+ 36
+ 37    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
+ 38        return await self._client.request(
+ 39            SVC,
+ 40            "ListRooms",
+ 41            list,
+ 42            self._auth_header(VideoGrants(room_list=True)),
+ 43            ListRoomsResponse,
+ 44        )
+ 45
+ 46    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
+ 47        return await self._client.request(
+ 48            SVC,
+ 49            "DeleteRoom",
+ 50            delete,
+ 51            self._auth_header(VideoGrants(room_create=True)),
+ 52            DeleteRoomResponse,
+ 53        )
+ 54
+ 55    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
+ 56        return await self._client.request(
+ 57            SVC,
+ 58            "UpdateRoomMetadata",
+ 59            update,
+ 60            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+ 61            Room,
+ 62        )
+ 63
+ 64    async def list_participants(
+ 65        self, list: ListParticipantsRequest
+ 66    ) -> ListParticipantsResponse:
+ 67        return await self._client.request(
+ 68            SVC,
+ 69            "ListParticipants",
+ 70            list,
+ 71            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
+ 72            ListParticipantsResponse,
+ 73        )
+ 74
+ 75    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
+ 76        return await self._client.request(
+ 77            SVC,
+ 78            "GetParticipant",
+ 79            get,
+ 80            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
+ 81            ParticipantInfo,
+ 82        )
+ 83
+ 84    async def remove_participant(
+ 85        self, remove: RoomParticipantIdentity
+ 86    ) -> RemoveParticipantResponse:
+ 87        return await self._client.request(
+ 88            SVC,
+ 89            "RemoveParticipant",
+ 90            remove,
+ 91            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
+ 92            RemoveParticipantResponse,
+ 93        )
+ 94
+ 95    async def mute_published_track(
+ 96        self,
+ 97        update: MuteRoomTrackRequest,
+ 98    ) -> MuteRoomTrackResponse:
+ 99        return await self._client.request(
+100            SVC,
+101            "MutePublishedTrack",
+102            update,
+103            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+104            MuteRoomTrackResponse,
+105        )
+106
+107    async def update_participant(
+108        self, update: UpdateParticipantRequest
+109    ) -> ParticipantInfo:
+110        return await self._client.request(
+111            SVC,
+112            "UpdateParticipant",
+113            update,
+114            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+115            ParticipantInfo,
+116        )
+117
+118    async def update_subscriptions(
+119        self, update: UpdateSubscriptionsRequest
+120    ) -> UpdateSubscriptionsResponse:
+121        return await self._client.request(
+122            SVC,
+123            "UpdateSubscriptions",
+124            update,
+125            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+126            UpdateSubscriptionsResponse,
+127        )
+128
+129    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
+130        return await self._client.request(
+131            SVC,
+132            "SendData",
+133            send,
+134            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
+135            SendDataResponse,
+136        )
+
+ + +
+
+ +
+ + class + RoomService(livekit.api._service.Service): + + + +
+ +
 11class RoomService(Service):
+ 12    """Client for LiveKit RoomService API
+ 13    
+ 14    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 15    
+ 16    ```python
+ 17    from livekit import api
+ 18    lkapi = api.LiveKitAPI()
+ 19    room_service = lkapi.room
+ 20    ```
+ 21    
+ 22    Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/
+ 23    """
+ 24    def __init__(
+ 25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 26    ):
+ 27        super().__init__(session, url, api_key, api_secret)
+ 28
+ 29    async def create_room(self, create: CreateRoomRequest) -> Room:
+ 30        return await self._client.request(
+ 31            SVC,
+ 32            "CreateRoom",
+ 33            create,
+ 34            self._auth_header(VideoGrants(room_create=True)),
+ 35            Room,
+ 36        )
+ 37
+ 38    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
+ 39        return await self._client.request(
+ 40            SVC,
+ 41            "ListRooms",
+ 42            list,
+ 43            self._auth_header(VideoGrants(room_list=True)),
+ 44            ListRoomsResponse,
+ 45        )
+ 46
+ 47    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
+ 48        return await self._client.request(
+ 49            SVC,
+ 50            "DeleteRoom",
+ 51            delete,
+ 52            self._auth_header(VideoGrants(room_create=True)),
+ 53            DeleteRoomResponse,
+ 54        )
+ 55
+ 56    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
+ 57        return await self._client.request(
+ 58            SVC,
+ 59            "UpdateRoomMetadata",
+ 60            update,
+ 61            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+ 62            Room,
+ 63        )
+ 64
+ 65    async def list_participants(
+ 66        self, list: ListParticipantsRequest
+ 67    ) -> ListParticipantsResponse:
+ 68        return await self._client.request(
+ 69            SVC,
+ 70            "ListParticipants",
+ 71            list,
+ 72            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
+ 73            ListParticipantsResponse,
+ 74        )
+ 75
+ 76    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
+ 77        return await self._client.request(
+ 78            SVC,
+ 79            "GetParticipant",
+ 80            get,
+ 81            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
+ 82            ParticipantInfo,
+ 83        )
+ 84
+ 85    async def remove_participant(
+ 86        self, remove: RoomParticipantIdentity
+ 87    ) -> RemoveParticipantResponse:
+ 88        return await self._client.request(
+ 89            SVC,
+ 90            "RemoveParticipant",
+ 91            remove,
+ 92            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
+ 93            RemoveParticipantResponse,
+ 94        )
+ 95
+ 96    async def mute_published_track(
+ 97        self,
+ 98        update: MuteRoomTrackRequest,
+ 99    ) -> MuteRoomTrackResponse:
+100        return await self._client.request(
+101            SVC,
+102            "MutePublishedTrack",
+103            update,
+104            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+105            MuteRoomTrackResponse,
+106        )
+107
+108    async def update_participant(
+109        self, update: UpdateParticipantRequest
+110    ) -> ParticipantInfo:
+111        return await self._client.request(
+112            SVC,
+113            "UpdateParticipant",
+114            update,
+115            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+116            ParticipantInfo,
+117        )
+118
+119    async def update_subscriptions(
+120        self, update: UpdateSubscriptionsRequest
+121    ) -> UpdateSubscriptionsResponse:
+122        return await self._client.request(
+123            SVC,
+124            "UpdateSubscriptions",
+125            update,
+126            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+127            UpdateSubscriptionsResponse,
+128        )
+129
+130    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
+131        return await self._client.request(
+132            SVC,
+133            "SendData",
+134            send,
+135            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
+136            SendDataResponse,
+137        )
+
+ + +

Client for LiveKit RoomService API

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+room_service = lkapi.room
+
+
+ +

Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/

+
+ + +
+ +
+ + RoomService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) + + + +
+ +
24    def __init__(
+25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+26    ):
+27        super().__init__(session, url, api_key, api_secret)
+
+ + + + +
+
+ +
+ + async def + create_room(self, create: room.CreateRoomRequest) -> models.Room: + + + +
+ +
29    async def create_room(self, create: CreateRoomRequest) -> Room:
+30        return await self._client.request(
+31            SVC,
+32            "CreateRoom",
+33            create,
+34            self._auth_header(VideoGrants(room_create=True)),
+35            Room,
+36        )
+
+ + + + +
+
+ +
+ + async def + list_rooms(self, list: room.ListRoomsRequest) -> room.ListRoomsResponse: + + + +
+ +
38    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
+39        return await self._client.request(
+40            SVC,
+41            "ListRooms",
+42            list,
+43            self._auth_header(VideoGrants(room_list=True)),
+44            ListRoomsResponse,
+45        )
+
+ + + + +
+
+ +
+ + async def + delete_room(self, delete: room.DeleteRoomRequest) -> room.DeleteRoomResponse: + + + +
+ +
47    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
+48        return await self._client.request(
+49            SVC,
+50            "DeleteRoom",
+51            delete,
+52            self._auth_header(VideoGrants(room_create=True)),
+53            DeleteRoomResponse,
+54        )
+
+ + + + +
+
+ +
+ + async def + update_room_metadata(self, update: room.UpdateRoomMetadataRequest) -> models.Room: + + + +
+ +
56    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
+57        return await self._client.request(
+58            SVC,
+59            "UpdateRoomMetadata",
+60            update,
+61            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+62            Room,
+63        )
+
+ + + + +
+
+ +
+ + async def + list_participants( self, list: room.ListParticipantsRequest) -> room.ListParticipantsResponse: + + + +
+ +
65    async def list_participants(
+66        self, list: ListParticipantsRequest
+67    ) -> ListParticipantsResponse:
+68        return await self._client.request(
+69            SVC,
+70            "ListParticipants",
+71            list,
+72            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
+73            ListParticipantsResponse,
+74        )
+
+ + + + +
+
+ +
+ + async def + get_participant(self, get: room.RoomParticipantIdentity) -> models.ParticipantInfo: + + + +
+ +
76    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
+77        return await self._client.request(
+78            SVC,
+79            "GetParticipant",
+80            get,
+81            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
+82            ParticipantInfo,
+83        )
+
+ + + + +
+
+ +
+ + async def + remove_participant( self, remove: room.RoomParticipantIdentity) -> room.RemoveParticipantResponse: + + + +
+ +
85    async def remove_participant(
+86        self, remove: RoomParticipantIdentity
+87    ) -> RemoveParticipantResponse:
+88        return await self._client.request(
+89            SVC,
+90            "RemoveParticipant",
+91            remove,
+92            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
+93            RemoveParticipantResponse,
+94        )
+
+ + + + +
+
+ +
+ + async def + mute_published_track(self, update: room.MuteRoomTrackRequest) -> room.MuteRoomTrackResponse: + + + +
+ +
 96    async def mute_published_track(
+ 97        self,
+ 98        update: MuteRoomTrackRequest,
+ 99    ) -> MuteRoomTrackResponse:
+100        return await self._client.request(
+101            SVC,
+102            "MutePublishedTrack",
+103            update,
+104            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+105            MuteRoomTrackResponse,
+106        )
+
+ + + + +
+
+ +
+ + async def + update_participant(self, update: room.UpdateParticipantRequest) -> models.ParticipantInfo: + + + +
+ +
108    async def update_participant(
+109        self, update: UpdateParticipantRequest
+110    ) -> ParticipantInfo:
+111        return await self._client.request(
+112            SVC,
+113            "UpdateParticipant",
+114            update,
+115            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+116            ParticipantInfo,
+117        )
+
+ + + + +
+
+ +
+ + async def + update_subscriptions( self, update: room.UpdateSubscriptionsRequest) -> room.UpdateSubscriptionsResponse: + + + +
+ +
119    async def update_subscriptions(
+120        self, update: UpdateSubscriptionsRequest
+121    ) -> UpdateSubscriptionsResponse:
+122        return await self._client.request(
+123            SVC,
+124            "UpdateSubscriptions",
+125            update,
+126            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
+127            UpdateSubscriptionsResponse,
+128        )
+
+ + + + +
+
+ +
+ + async def + send_data(self, send: room.SendDataRequest) -> room.SendDataResponse: + + + +
+ +
130    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
+131        return await self._client.request(
+132            SVC,
+133            "SendData",
+134            send,
+135            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
+136            SendDataResponse,
+137        )
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/sip_service.html b/docs/livekit/api/sip_service.html new file mode 100644 index 00000000..3c27264e --- /dev/null +++ b/docs/livekit/api/sip_service.html @@ -0,0 +1,978 @@ + + + + + + + livekit.api.sip_service API documentation + + + + + + + + + +
+
+

+livekit.api.sip_service

+ + + + + + +
  1import aiohttp
+  2from livekit.protocol.sip import CreateSIPTrunkRequest, SIPTrunkInfo, CreateSIPInboundTrunkRequest, SIPInboundTrunkInfo, CreateSIPOutboundTrunkRequest, SIPOutboundTrunkInfo, ListSIPTrunkRequest, ListSIPTrunkResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, DeleteSIPTrunkRequest, SIPDispatchRuleInfo, CreateSIPDispatchRuleRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, DeleteSIPDispatchRuleRequest, CreateSIPParticipantRequest, TransferSIPParticipantRequest, SIPParticipantInfo
+  3from ._service import Service
+  4from .access_token import VideoGrants, SIPGrants
+  5
+  6SVC = "SIP"
+  7"""@private"""
+  8
+  9class SipService(Service):
+ 10    """Client for LiveKit SIP Service API
+ 11    
+ 12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 13    
+ 14    ```python
+ 15    from livekit import api
+ 16    lkapi = api.LiveKitAPI()
+ 17    sip_service = lkapi.sip
+ 18    ```
+ 19    """
+ 20    def __init__(
+ 21        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 22    ):
+ 23        super().__init__(session, url, api_key, api_secret)
+ 24
+ 25    async def create_sip_trunk(
+ 26        self, create: CreateSIPTrunkRequest
+ 27    ) -> SIPTrunkInfo:
+ 28        return await self._client.request(
+ 29            SVC,
+ 30            "CreateSIPTrunk",
+ 31            create,
+ 32            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 33            SIPTrunkInfo,
+ 34        )
+ 35
+ 36    async def create_sip_inbound_trunk(
+ 37        self, create: CreateSIPInboundTrunkRequest
+ 38    ) -> SIPInboundTrunkInfo:
+ 39        return await self._client.request(
+ 40            SVC,
+ 41            "CreateSIPInboundTrunk",
+ 42            create,
+ 43            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 44            SIPInboundTrunkInfo,
+ 45        )
+ 46
+ 47    async def create_sip_outbound_trunk(
+ 48        self, create: CreateSIPOutboundTrunkRequest
+ 49    ) -> SIPOutboundTrunkInfo:
+ 50        return await self._client.request(
+ 51            SVC,
+ 52            "CreateSIPOutboundTrunk",
+ 53            create,
+ 54            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 55            SIPOutboundTrunkInfo,
+ 56        )
+ 57
+ 58    async def list_sip_trunk(
+ 59        self, list: ListSIPTrunkRequest
+ 60    ) -> ListSIPTrunkResponse:
+ 61        return await self._client.request(
+ 62            SVC,
+ 63            "ListSIPTrunk",
+ 64            list,
+ 65            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 66            ListSIPTrunkResponse,
+ 67        )
+ 68
+ 69    async def list_sip_inbound_trunk(
+ 70        self, list: ListSIPInboundTrunkRequest
+ 71    ) -> ListSIPInboundTrunkResponse:
+ 72        return await self._client.request(
+ 73            SVC,
+ 74            "ListSIPInboundTrunk",
+ 75            list,
+ 76            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 77            ListSIPInboundTrunkResponse,
+ 78        )
+ 79
+ 80    async def list_sip_outbound_trunk(
+ 81        self, list: ListSIPOutboundTrunkRequest
+ 82    ) -> ListSIPOutboundTrunkResponse:
+ 83        return await self._client.request(
+ 84            SVC,
+ 85            "ListSIPOutboundTrunk",
+ 86            list,
+ 87            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 88            ListSIPOutboundTrunkResponse,
+ 89        )
+ 90
+ 91    async def delete_sip_trunk(
+ 92        self, delete: DeleteSIPTrunkRequest
+ 93    ) -> SIPTrunkInfo:
+ 94        return await self._client.request(
+ 95            SVC,
+ 96            "DeleteSIPTrunk",
+ 97            delete,
+ 98            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 99            SIPTrunkInfo,
+100        )
+101
+102    async def create_sip_dispatch_rule(
+103        self, create: CreateSIPDispatchRuleRequest
+104    ) -> SIPDispatchRuleInfo:
+105        return await self._client.request(
+106            SVC,
+107            "CreateSIPDispatchRule",
+108            create,
+109            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+110            SIPDispatchRuleInfo,
+111        )
+112
+113    async def list_sip_dispatch_rule(
+114        self, list: ListSIPDispatchRuleRequest
+115    ) -> ListSIPDispatchRuleResponse:
+116        return await self._client.request(
+117            SVC,
+118            "ListSIPDispatchRule",
+119            list,
+120            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+121            ListSIPDispatchRuleResponse,
+122        )
+123
+124    async def delete_sip_dispatch_rule(
+125        self, delete: DeleteSIPDispatchRuleRequest
+126    ) -> SIPDispatchRuleInfo:
+127        return await self._client.request(
+128            SVC,
+129            "DeleteSIPDispatchRule",
+130            delete,
+131            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+132            SIPDispatchRuleInfo,
+133        )
+134
+135    async def create_sip_participant(
+136        self, create: CreateSIPParticipantRequest
+137    ) -> SIPParticipantInfo:
+138        return await self._client.request(
+139            SVC,
+140            "CreateSIPParticipant",
+141            create,
+142            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
+143            SIPParticipantInfo,
+144        )
+145
+146    async def transfer_sip_participant(
+147        self, transfer: TransferSIPParticipantRequest
+148    ) -> SIPParticipantInfo:
+149        return await self._client.request(
+150            SVC,
+151            "TransferSIPParticipant",
+152            transfer,
+153            self._auth_header(
+154                VideoGrants(
+155                    room_admin=True,
+156                    room=transfer.room_name,
+157                ),
+158                sip=SIPGrants(call=True),
+159            ),
+160            SIPParticipantInfo,
+161        )
+
+ + +
+
+ +
+ + class + SipService(livekit.api._service.Service): + + + +
+ +
 10class SipService(Service):
+ 11    """Client for LiveKit SIP Service API
+ 12    
+ 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+ 14    
+ 15    ```python
+ 16    from livekit import api
+ 17    lkapi = api.LiveKitAPI()
+ 18    sip_service = lkapi.sip
+ 19    ```
+ 20    """
+ 21    def __init__(
+ 22        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+ 23    ):
+ 24        super().__init__(session, url, api_key, api_secret)
+ 25
+ 26    async def create_sip_trunk(
+ 27        self, create: CreateSIPTrunkRequest
+ 28    ) -> SIPTrunkInfo:
+ 29        return await self._client.request(
+ 30            SVC,
+ 31            "CreateSIPTrunk",
+ 32            create,
+ 33            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 34            SIPTrunkInfo,
+ 35        )
+ 36
+ 37    async def create_sip_inbound_trunk(
+ 38        self, create: CreateSIPInboundTrunkRequest
+ 39    ) -> SIPInboundTrunkInfo:
+ 40        return await self._client.request(
+ 41            SVC,
+ 42            "CreateSIPInboundTrunk",
+ 43            create,
+ 44            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 45            SIPInboundTrunkInfo,
+ 46        )
+ 47
+ 48    async def create_sip_outbound_trunk(
+ 49        self, create: CreateSIPOutboundTrunkRequest
+ 50    ) -> SIPOutboundTrunkInfo:
+ 51        return await self._client.request(
+ 52            SVC,
+ 53            "CreateSIPOutboundTrunk",
+ 54            create,
+ 55            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 56            SIPOutboundTrunkInfo,
+ 57        )
+ 58
+ 59    async def list_sip_trunk(
+ 60        self, list: ListSIPTrunkRequest
+ 61    ) -> ListSIPTrunkResponse:
+ 62        return await self._client.request(
+ 63            SVC,
+ 64            "ListSIPTrunk",
+ 65            list,
+ 66            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 67            ListSIPTrunkResponse,
+ 68        )
+ 69
+ 70    async def list_sip_inbound_trunk(
+ 71        self, list: ListSIPInboundTrunkRequest
+ 72    ) -> ListSIPInboundTrunkResponse:
+ 73        return await self._client.request(
+ 74            SVC,
+ 75            "ListSIPInboundTrunk",
+ 76            list,
+ 77            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 78            ListSIPInboundTrunkResponse,
+ 79        )
+ 80
+ 81    async def list_sip_outbound_trunk(
+ 82        self, list: ListSIPOutboundTrunkRequest
+ 83    ) -> ListSIPOutboundTrunkResponse:
+ 84        return await self._client.request(
+ 85            SVC,
+ 86            "ListSIPOutboundTrunk",
+ 87            list,
+ 88            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+ 89            ListSIPOutboundTrunkResponse,
+ 90        )
+ 91
+ 92    async def delete_sip_trunk(
+ 93        self, delete: DeleteSIPTrunkRequest
+ 94    ) -> SIPTrunkInfo:
+ 95        return await self._client.request(
+ 96            SVC,
+ 97            "DeleteSIPTrunk",
+ 98            delete,
+ 99            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+100            SIPTrunkInfo,
+101        )
+102
+103    async def create_sip_dispatch_rule(
+104        self, create: CreateSIPDispatchRuleRequest
+105    ) -> SIPDispatchRuleInfo:
+106        return await self._client.request(
+107            SVC,
+108            "CreateSIPDispatchRule",
+109            create,
+110            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+111            SIPDispatchRuleInfo,
+112        )
+113
+114    async def list_sip_dispatch_rule(
+115        self, list: ListSIPDispatchRuleRequest
+116    ) -> ListSIPDispatchRuleResponse:
+117        return await self._client.request(
+118            SVC,
+119            "ListSIPDispatchRule",
+120            list,
+121            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+122            ListSIPDispatchRuleResponse,
+123        )
+124
+125    async def delete_sip_dispatch_rule(
+126        self, delete: DeleteSIPDispatchRuleRequest
+127    ) -> SIPDispatchRuleInfo:
+128        return await self._client.request(
+129            SVC,
+130            "DeleteSIPDispatchRule",
+131            delete,
+132            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+133            SIPDispatchRuleInfo,
+134        )
+135
+136    async def create_sip_participant(
+137        self, create: CreateSIPParticipantRequest
+138    ) -> SIPParticipantInfo:
+139        return await self._client.request(
+140            SVC,
+141            "CreateSIPParticipant",
+142            create,
+143            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
+144            SIPParticipantInfo,
+145        )
+146
+147    async def transfer_sip_participant(
+148        self, transfer: TransferSIPParticipantRequest
+149    ) -> SIPParticipantInfo:
+150        return await self._client.request(
+151            SVC,
+152            "TransferSIPParticipant",
+153            transfer,
+154            self._auth_header(
+155                VideoGrants(
+156                    room_admin=True,
+157                    room=transfer.room_name,
+158                ),
+159                sip=SIPGrants(call=True),
+160            ),
+161            SIPParticipantInfo,
+162        )
+
+ + +

Client for LiveKit SIP Service API

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+sip_service = lkapi.sip
+
+
+
+ + +
+ +
+ + SipService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) + + + +
+ +
21    def __init__(
+22        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
+23    ):
+24        super().__init__(session, url, api_key, api_secret)
+
+ + + + +
+
+ +
+ + async def + create_sip_trunk(self, create: sip.CreateSIPTrunkRequest) -> sip.SIPTrunkInfo: + + + +
+ +
26    async def create_sip_trunk(
+27        self, create: CreateSIPTrunkRequest
+28    ) -> SIPTrunkInfo:
+29        return await self._client.request(
+30            SVC,
+31            "CreateSIPTrunk",
+32            create,
+33            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+34            SIPTrunkInfo,
+35        )
+
+ + + + +
+
+ +
+ + async def + create_sip_inbound_trunk( self, create: sip.CreateSIPInboundTrunkRequest) -> sip.SIPInboundTrunkInfo: + + + +
+ +
37    async def create_sip_inbound_trunk(
+38        self, create: CreateSIPInboundTrunkRequest
+39    ) -> SIPInboundTrunkInfo:
+40        return await self._client.request(
+41            SVC,
+42            "CreateSIPInboundTrunk",
+43            create,
+44            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+45            SIPInboundTrunkInfo,
+46        )
+
+ + + + +
+
+ +
+ + async def + create_sip_outbound_trunk( self, create: sip.CreateSIPOutboundTrunkRequest) -> sip.SIPOutboundTrunkInfo: + + + +
+ +
48    async def create_sip_outbound_trunk(
+49        self, create: CreateSIPOutboundTrunkRequest
+50    ) -> SIPOutboundTrunkInfo:
+51        return await self._client.request(
+52            SVC,
+53            "CreateSIPOutboundTrunk",
+54            create,
+55            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+56            SIPOutboundTrunkInfo,
+57        )
+
+ + + + +
+
+ +
+ + async def + list_sip_trunk(self, list: sip.ListSIPTrunkRequest) -> sip.ListSIPTrunkResponse: + + + +
+ +
59    async def list_sip_trunk(
+60        self, list: ListSIPTrunkRequest
+61    ) -> ListSIPTrunkResponse:
+62        return await self._client.request(
+63            SVC,
+64            "ListSIPTrunk",
+65            list,
+66            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+67            ListSIPTrunkResponse,
+68        )
+
+ + + + +
+
+ +
+ + async def + list_sip_inbound_trunk( self, list: sip.ListSIPInboundTrunkRequest) -> sip.ListSIPInboundTrunkResponse: + + + +
+ +
70    async def list_sip_inbound_trunk(
+71        self, list: ListSIPInboundTrunkRequest
+72    ) -> ListSIPInboundTrunkResponse:
+73        return await self._client.request(
+74            SVC,
+75            "ListSIPInboundTrunk",
+76            list,
+77            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+78            ListSIPInboundTrunkResponse,
+79        )
+
+ + + + +
+
+ +
+ + async def + list_sip_outbound_trunk( self, list: sip.ListSIPOutboundTrunkRequest) -> sip.ListSIPOutboundTrunkResponse: + + + +
+ +
81    async def list_sip_outbound_trunk(
+82        self, list: ListSIPOutboundTrunkRequest
+83    ) -> ListSIPOutboundTrunkResponse:
+84        return await self._client.request(
+85            SVC,
+86            "ListSIPOutboundTrunk",
+87            list,
+88            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+89            ListSIPOutboundTrunkResponse,
+90        )
+
+ + + + +
+
+ +
+ + async def + delete_sip_trunk(self, delete: sip.DeleteSIPTrunkRequest) -> sip.SIPTrunkInfo: + + + +
+ +
 92    async def delete_sip_trunk(
+ 93        self, delete: DeleteSIPTrunkRequest
+ 94    ) -> SIPTrunkInfo:
+ 95        return await self._client.request(
+ 96            SVC,
+ 97            "DeleteSIPTrunk",
+ 98            delete,
+ 99            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+100            SIPTrunkInfo,
+101        )
+
+ + + + +
+
+ +
+ + async def + create_sip_dispatch_rule( self, create: sip.CreateSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo: + + + +
+ +
103    async def create_sip_dispatch_rule(
+104        self, create: CreateSIPDispatchRuleRequest
+105    ) -> SIPDispatchRuleInfo:
+106        return await self._client.request(
+107            SVC,
+108            "CreateSIPDispatchRule",
+109            create,
+110            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+111            SIPDispatchRuleInfo,
+112        )
+
+ + + + +
+
+ +
+ + async def + list_sip_dispatch_rule( self, list: sip.ListSIPDispatchRuleRequest) -> sip.ListSIPDispatchRuleResponse: + + + +
+ +
114    async def list_sip_dispatch_rule(
+115        self, list: ListSIPDispatchRuleRequest
+116    ) -> ListSIPDispatchRuleResponse:
+117        return await self._client.request(
+118            SVC,
+119            "ListSIPDispatchRule",
+120            list,
+121            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+122            ListSIPDispatchRuleResponse,
+123        )
+
+ + + + +
+
+ +
+ + async def + delete_sip_dispatch_rule( self, delete: sip.DeleteSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo: + + + +
+ +
125    async def delete_sip_dispatch_rule(
+126        self, delete: DeleteSIPDispatchRuleRequest
+127    ) -> SIPDispatchRuleInfo:
+128        return await self._client.request(
+129            SVC,
+130            "DeleteSIPDispatchRule",
+131            delete,
+132            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
+133            SIPDispatchRuleInfo,
+134        )
+
+ + + + +
+
+ +
+ + async def + create_sip_participant(self, create: sip.CreateSIPParticipantRequest) -> sip.SIPParticipantInfo: + + + +
+ +
136    async def create_sip_participant(
+137        self, create: CreateSIPParticipantRequest
+138    ) -> SIPParticipantInfo:
+139        return await self._client.request(
+140            SVC,
+141            "CreateSIPParticipant",
+142            create,
+143            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
+144            SIPParticipantInfo,
+145        )
+
+ + + + +
+
+ +
+ + async def + transfer_sip_participant( self, transfer: sip.TransferSIPParticipantRequest) -> sip.SIPParticipantInfo: + + + +
+ +
147    async def transfer_sip_participant(
+148        self, transfer: TransferSIPParticipantRequest
+149    ) -> SIPParticipantInfo:
+150        return await self._client.request(
+151            SVC,
+152            "TransferSIPParticipant",
+153            transfer,
+154            self._auth_header(
+155                VideoGrants(
+156                    room_admin=True,
+157                    room=transfer.room_name,
+158                ),
+159                sip=SIPGrants(call=True),
+160            ),
+161            SIPParticipantInfo,
+162        )
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/twirp_client.html b/docs/livekit/api/twirp_client.html new file mode 100644 index 00000000..2d2670aa --- /dev/null +++ b/docs/livekit/api/twirp_client.html @@ -0,0 +1,952 @@ + + + + + + + livekit.api.twirp_client API documentation + + + + + + + + + +
+
+

+livekit.api.twirp_client

+ + + + + + +
  1# Copyright 2023 LiveKit, Inc.
+  2#
+  3# Licensed under the Apache License, Version 2.0 (the "License");
+  4# you may not use this file except in compliance with the License.
+  5# You may obtain a copy of the License at
+  6#
+  7#     http://www.apache.org/licenses/LICENSE-2.0
+  8#
+  9# Unless required by applicable law or agreed to in writing, software
+ 10# distributed under the License is distributed on an "AS IS" BASIS,
+ 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ 12# See the License for the specific language governing permissions and
+ 13# limitations under the License.
+ 14
+ 15from typing import Dict, Type, TypeVar
+ 16
+ 17import aiohttp
+ 18from google.protobuf.message import Message
+ 19from urllib.parse import urlparse
+ 20
+ 21DEFAULT_PREFIX = "twirp"
+ 22
+ 23
+ 24class TwirpError(Exception):
+ 25    def __init__(self, code: str, msg: str) -> None:
+ 26        self._code = code
+ 27        self._msg = msg
+ 28
+ 29    @property
+ 30    def code(self) -> str:
+ 31        return self._code
+ 32
+ 33    @property
+ 34    def message(self) -> str:
+ 35        return self._msg
+ 36
+ 37
+ 38class TwirpErrorCode:
+ 39    CANCELED = "canceled"
+ 40    UNKNOWN = "unknown"
+ 41    INVALID_ARGUMENT = "invalid_argument"
+ 42    MALFORMED = "malformed"
+ 43    DEADLINE_EXCEEDED = "deadline_exceeded"
+ 44    NOT_FOUND = "not_found"
+ 45    BAD_ROUTE = "bad_route"
+ 46    ALREADY_EXISTS = "already_exists"
+ 47    PERMISSION_DENIED = "permission_denied"
+ 48    UNAUTHENTICATED = "unauthenticated"
+ 49    RESOURCE_EXHAUSTED = "resource_exhausted"
+ 50    FAILED_PRECONDITION = "failed_precondition"
+ 51    ABORTED = "aborted"
+ 52    OUT_OF_RANGE = "out_of_range"
+ 53    UNIMPLEMENTED = "unimplemented"
+ 54    INTERNAL = "internal"
+ 55    UNAVAILABLE = "unavailable"
+ 56    DATA_LOSS = "dataloss"
+ 57
+ 58
+ 59T = TypeVar("T", bound=Message)
+ 60
+ 61
+ 62class TwirpClient:
+ 63    def __init__(
+ 64        self,
+ 65        session: aiohttp.ClientSession,
+ 66        host: str,
+ 67        pkg: str,
+ 68        prefix: str = DEFAULT_PREFIX,
+ 69    ) -> None:
+ 70        parse_res = urlparse(host)
+ 71        scheme = parse_res.scheme
+ 72        if scheme.startswith("ws"):
+ 73            scheme = scheme.replace("ws", "http")
+ 74
+ 75        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
+ 76        self.host = host.rstrip("/")
+ 77        self.pkg = pkg
+ 78        self.prefix = prefix
+ 79        self._session = session
+ 80
+ 81    async def request(
+ 82        self,
+ 83        service: str,
+ 84        method: str,
+ 85        data: Message,
+ 86        headers: Dict[str, str],
+ 87        response_class: Type[T],
+ 88    ) -> T:
+ 89        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
+ 90        headers["Content-Type"] = "application/protobuf"
+ 91
+ 92        serialized_data = data.SerializeToString()
+ 93        async with self._session.post(
+ 94            url, headers=headers, data=serialized_data
+ 95        ) as resp:
+ 96            if resp.status == 200:
+ 97                return response_class.FromString(await resp.read())
+ 98            else:
+ 99                # when we have an error, Twirp always encode it in json
+100                error_data = await resp.json()
+101                raise TwirpError(error_data["code"], error_data["msg"])
+
+ + +
+
+
+ DEFAULT_PREFIX = +'twirp' + + +
+ + + + +
+
+ +
+ + class + TwirpError(builtins.Exception): + + + +
+ +
25class TwirpError(Exception):
+26    def __init__(self, code: str, msg: str) -> None:
+27        self._code = code
+28        self._msg = msg
+29
+30    @property
+31    def code(self) -> str:
+32        return self._code
+33
+34    @property
+35    def message(self) -> str:
+36        return self._msg
+
+ + +

Common base class for all non-exit exceptions.

+
+ + +
+ +
+ + TwirpError(code: str, msg: str) + + + +
+ +
26    def __init__(self, code: str, msg: str) -> None:
+27        self._code = code
+28        self._msg = msg
+
+ + + + +
+
+ +
+ code: str + + + +
+ +
30    @property
+31    def code(self) -> str:
+32        return self._code
+
+ + + + +
+
+ +
+ message: str + + + +
+ +
34    @property
+35    def message(self) -> str:
+36        return self._msg
+
+ + + + +
+
+
+ +
+ + class + TwirpErrorCode: + + + +
+ +
39class TwirpErrorCode:
+40    CANCELED = "canceled"
+41    UNKNOWN = "unknown"
+42    INVALID_ARGUMENT = "invalid_argument"
+43    MALFORMED = "malformed"
+44    DEADLINE_EXCEEDED = "deadline_exceeded"
+45    NOT_FOUND = "not_found"
+46    BAD_ROUTE = "bad_route"
+47    ALREADY_EXISTS = "already_exists"
+48    PERMISSION_DENIED = "permission_denied"
+49    UNAUTHENTICATED = "unauthenticated"
+50    RESOURCE_EXHAUSTED = "resource_exhausted"
+51    FAILED_PRECONDITION = "failed_precondition"
+52    ABORTED = "aborted"
+53    OUT_OF_RANGE = "out_of_range"
+54    UNIMPLEMENTED = "unimplemented"
+55    INTERNAL = "internal"
+56    UNAVAILABLE = "unavailable"
+57    DATA_LOSS = "dataloss"
+
+ + + + +
+
+ CANCELED = +'canceled' + + +
+ + + + +
+
+
+ UNKNOWN = +'unknown' + + +
+ + + + +
+
+
+ INVALID_ARGUMENT = +'invalid_argument' + + +
+ + + + +
+
+
+ MALFORMED = +'malformed' + + +
+ + + + +
+
+
+ DEADLINE_EXCEEDED = +'deadline_exceeded' + + +
+ + + + +
+
+
+ NOT_FOUND = +'not_found' + + +
+ + + + +
+
+
+ BAD_ROUTE = +'bad_route' + + +
+ + + + +
+
+
+ ALREADY_EXISTS = +'already_exists' + + +
+ + + + +
+
+
+ PERMISSION_DENIED = +'permission_denied' + + +
+ + + + +
+
+
+ UNAUTHENTICATED = +'unauthenticated' + + +
+ + + + +
+
+
+ RESOURCE_EXHAUSTED = +'resource_exhausted' + + +
+ + + + +
+
+
+ FAILED_PRECONDITION = +'failed_precondition' + + +
+ + + + +
+
+
+ ABORTED = +'aborted' + + +
+ + + + +
+
+
+ OUT_OF_RANGE = +'out_of_range' + + +
+ + + + +
+
+
+ UNIMPLEMENTED = +'unimplemented' + + +
+ + + + +
+
+
+ INTERNAL = +'internal' + + +
+ + + + +
+
+
+ UNAVAILABLE = +'unavailable' + + +
+ + + + +
+
+
+ DATA_LOSS = +'dataloss' + + +
+ + + + +
+
+
+ +
+ + class + TwirpClient: + + + +
+ +
 63class TwirpClient:
+ 64    def __init__(
+ 65        self,
+ 66        session: aiohttp.ClientSession,
+ 67        host: str,
+ 68        pkg: str,
+ 69        prefix: str = DEFAULT_PREFIX,
+ 70    ) -> None:
+ 71        parse_res = urlparse(host)
+ 72        scheme = parse_res.scheme
+ 73        if scheme.startswith("ws"):
+ 74            scheme = scheme.replace("ws", "http")
+ 75
+ 76        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
+ 77        self.host = host.rstrip("/")
+ 78        self.pkg = pkg
+ 79        self.prefix = prefix
+ 80        self._session = session
+ 81
+ 82    async def request(
+ 83        self,
+ 84        service: str,
+ 85        method: str,
+ 86        data: Message,
+ 87        headers: Dict[str, str],
+ 88        response_class: Type[T],
+ 89    ) -> T:
+ 90        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
+ 91        headers["Content-Type"] = "application/protobuf"
+ 92
+ 93        serialized_data = data.SerializeToString()
+ 94        async with self._session.post(
+ 95            url, headers=headers, data=serialized_data
+ 96        ) as resp:
+ 97            if resp.status == 200:
+ 98                return response_class.FromString(await resp.read())
+ 99            else:
+100                # when we have an error, Twirp always encode it in json
+101                error_data = await resp.json()
+102                raise TwirpError(error_data["code"], error_data["msg"])
+
+ + + + +
+ +
+ + TwirpClient( session: aiohttp.client.ClientSession, host: str, pkg: str, prefix: str = 'twirp') + + + +
+ +
64    def __init__(
+65        self,
+66        session: aiohttp.ClientSession,
+67        host: str,
+68        pkg: str,
+69        prefix: str = DEFAULT_PREFIX,
+70    ) -> None:
+71        parse_res = urlparse(host)
+72        scheme = parse_res.scheme
+73        if scheme.startswith("ws"):
+74            scheme = scheme.replace("ws", "http")
+75
+76        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
+77        self.host = host.rstrip("/")
+78        self.pkg = pkg
+79        self.prefix = prefix
+80        self._session = session
+
+ + + + +
+
+
+ host + + +
+ + + + +
+
+
+ pkg + + +
+ + + + +
+
+
+ prefix + + +
+ + + + +
+
+ +
+ + async def + request( self, service: str, method: str, data: google.protobuf.message.Message, headers: Dict[str, str], response_class: Type[~T]) -> ~T: + + + +
+ +
 82    async def request(
+ 83        self,
+ 84        service: str,
+ 85        method: str,
+ 86        data: Message,
+ 87        headers: Dict[str, str],
+ 88        response_class: Type[T],
+ 89    ) -> T:
+ 90        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
+ 91        headers["Content-Type"] = "application/protobuf"
+ 92
+ 93        serialized_data = data.SerializeToString()
+ 94        async with self._session.post(
+ 95            url, headers=headers, data=serialized_data
+ 96        ) as resp:
+ 97            if resp.status == 200:
+ 98                return response_class.FromString(await resp.read())
+ 99            else:
+100                # when we have an error, Twirp always encode it in json
+101                error_data = await resp.json()
+102                raise TwirpError(error_data["code"], error_data["msg"])
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/version.html b/docs/livekit/api/version.html new file mode 100644 index 00000000..6dc0e3ed --- /dev/null +++ b/docs/livekit/api/version.html @@ -0,0 +1,242 @@ + + + + + + + livekit.api.version API documentation + + + + + + + + + +
+
+

+livekit.api.version

+ + + + + + +
1__version__ = "0.8.0"
+
+ + +
+
+ + \ No newline at end of file diff --git a/docs/livekit/api/webhook.html b/docs/livekit/api/webhook.html new file mode 100644 index 00000000..77d57415 --- /dev/null +++ b/docs/livekit/api/webhook.html @@ -0,0 +1,393 @@ + + + + + + + livekit.api.webhook API documentation + + + + + + + + + +
+
+

+livekit.api.webhook

+ + + + + + +
 1from .access_token import TokenVerifier
+ 2from livekit.protocol.webhook import WebhookEvent
+ 3from google.protobuf.json_format import Parse
+ 4import hashlib
+ 5import base64
+ 6
+ 7
+ 8class WebhookReceiver:
+ 9    """Receive webhooks from LiveKit.
+10    
+11    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+12    
+13    ```python
+14    from livekit import api
+15    lkapi = api.LiveKitAPI()
+16    webhook = lkapi.webhook
+17    ```
+18    
+19    Also see https://docs.livekit.io/home/server/webhooks/
+20    """
+21    def __init__(self, token_verifier: TokenVerifier):
+22        self._verifier = token_verifier
+23
+24    def receive(self, body: str, auth_token: str) -> WebhookEvent:
+25        claims = self._verifier.verify(auth_token)
+26        if claims.sha256 is None:
+27            raise Exception("sha256 was not found in the token")
+28
+29        body_hash = hashlib.sha256(body.encode()).digest()
+30        claims_hash = base64.b64decode(claims.sha256)
+31
+32        if body_hash != claims_hash:
+33            raise Exception("hash mismatch")
+34
+35        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
+
+ + +
+
+ +
+ + class + WebhookReceiver: + + + +
+ +
 9class WebhookReceiver:
+10    """Receive webhooks from LiveKit.
+11    
+12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
+13    
+14    ```python
+15    from livekit import api
+16    lkapi = api.LiveKitAPI()
+17    webhook = lkapi.webhook
+18    ```
+19    
+20    Also see https://docs.livekit.io/home/server/webhooks/
+21    """
+22    def __init__(self, token_verifier: TokenVerifier):
+23        self._verifier = token_verifier
+24
+25    def receive(self, body: str, auth_token: str) -> WebhookEvent:
+26        claims = self._verifier.verify(auth_token)
+27        if claims.sha256 is None:
+28            raise Exception("sha256 was not found in the token")
+29
+30        body_hash = hashlib.sha256(body.encode()).digest()
+31        claims_hash = base64.b64decode(claims.sha256)
+32
+33        if body_hash != claims_hash:
+34            raise Exception("hash mismatch")
+35
+36        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
+
+ + +

Receive webhooks from LiveKit.

+ +

Recommended way to use this service is via livekit.api.LiveKitAPI:

+ +
+
from livekit import api
+lkapi = api.LiveKitAPI()
+webhook = lkapi.webhook
+
+
+ +

Also see https://docs.livekit.io/home/server/webhooks/

+
+ + +
+ +
+ + WebhookReceiver(token_verifier: livekit.api.access_token.TokenVerifier) + + + +
+ +
22    def __init__(self, token_verifier: TokenVerifier):
+23        self._verifier = token_verifier
+
+ + + + +
+
+ +
+ + def + receive(self, body: str, auth_token: str) -> webhook.WebhookEvent: + + + +
+ +
25    def receive(self, body: str, auth_token: str) -> WebhookEvent:
+26        claims = self._verifier.verify(auth_token)
+27        if claims.sha256 is None:
+28            raise Exception("sha256 was not found in the token")
+29
+30        body_hash = hashlib.sha256(body.encode()).digest()
+31        claims_hash = base64.b64decode(claims.sha256)
+32
+33        if body_hash != claims_hash:
+34            raise Exception("hash mismatch")
+35
+36        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
+
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/docs/search.js b/docs/search.js new file mode 100644 index 00000000..0259cd0b --- /dev/null +++ b/docs/search.js @@ -0,0 +1,46 @@ +window.pdocSearch = (function(){ +/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oLiveKit Server APIs for Python

\n\n

Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.

\n\n

Primary entry point is LiveKitAPI.

\n\n

See https://docs.livekit.io/reference/server/server-apis for more information.

\n"}, "livekit.api.LiveKitAPI": {"fullname": "livekit.api.LiveKitAPI", "modulename": "livekit.api", "qualname": "LiveKitAPI", "kind": "class", "doc": "

LiveKit Server API Client

\n\n

This class is the main entrypoint, which exposes all services.

\n\n

Usage:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nrooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))\n
\n
\n"}, "livekit.api.LiveKitAPI.__init__": {"fullname": "livekit.api.LiveKitAPI.__init__", "modulename": "livekit.api", "qualname": "LiveKitAPI.__init__", "kind": "function", "doc": "

Create a new LiveKitAPI instance.

\n\n
Arguments:
\n\n
    \n
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • \n
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • \n
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • \n
  • timeout: Request timeout (default: 60 seconds)
  • \n
\n", "signature": "(\turl: Optional[str] = None,\tapi_key: Optional[str] = None,\tapi_secret: Optional[str] = None,\t*,\ttimeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5))"}, "livekit.api.LiveKitAPI.agent_dispatch": {"fullname": "livekit.api.LiveKitAPI.agent_dispatch", "modulename": "livekit.api", "qualname": "LiveKitAPI.agent_dispatch", "kind": "variable", "doc": "

Instance of the AgentDispatchService

\n\n

See livekit.api.agent_dispatch_service.AgentDispatchService

\n", "annotation": ": livekit.api.agent_dispatch_service.AgentDispatchService"}, "livekit.api.LiveKitAPI.room": {"fullname": "livekit.api.LiveKitAPI.room", "modulename": "livekit.api", "qualname": "LiveKitAPI.room", "kind": "variable", "doc": "

Instance of the RoomService

\n\n

See livekit.api.room_service.RoomService

\n", "annotation": ": livekit.api.room_service.RoomService"}, "livekit.api.LiveKitAPI.ingress": {"fullname": "livekit.api.LiveKitAPI.ingress", "modulename": "livekit.api", "qualname": "LiveKitAPI.ingress", "kind": "variable", "doc": "

Instance of the IngressService

\n\n

See livekit.api.ingress_service.IngressService

\n", "annotation": ": livekit.api.ingress_service.IngressService"}, "livekit.api.LiveKitAPI.egress": {"fullname": "livekit.api.LiveKitAPI.egress", "modulename": "livekit.api", "qualname": "LiveKitAPI.egress", "kind": "variable", "doc": "

Instance of the EgressService

\n\n

See livekit.api.egress_service.EgressService

\n", "annotation": ": livekit.api.egress_service.EgressService"}, "livekit.api.LiveKitAPI.sip": {"fullname": "livekit.api.LiveKitAPI.sip", "modulename": "livekit.api", "qualname": "LiveKitAPI.sip", "kind": "variable", "doc": "

Instance of the SipService

\n\n

See livekit.api.sip_service.SipService

\n", "annotation": ": livekit.api.sip_service.SipService"}, "livekit.api.VideoGrants": {"fullname": "livekit.api.VideoGrants", "modulename": "livekit.api", "qualname": "VideoGrants", "kind": "class", "doc": "

\n"}, "livekit.api.VideoGrants.__init__": {"fullname": "livekit.api.VideoGrants.__init__", "modulename": "livekit.api", "qualname": "VideoGrants.__init__", "kind": "function", "doc": "

\n", "signature": "(\troom_create: Optional[bool] = None,\troom_list: Optional[bool] = None,\troom_record: Optional[bool] = None,\troom_admin: Optional[bool] = None,\troom_join: Optional[bool] = None,\troom: str = '',\tcan_publish: bool = True,\tcan_subscribe: bool = True,\tcan_publish_data: bool = True,\tcan_publish_sources: Optional[List[str]] = None,\tcan_update_own_metadata: Optional[bool] = None,\tingress_admin: Optional[bool] = None,\thidden: Optional[bool] = None,\trecorder: Optional[bool] = None,\tagent: Optional[bool] = None)"}, "livekit.api.VideoGrants.room_create": {"fullname": "livekit.api.VideoGrants.room_create", "modulename": "livekit.api", "qualname": "VideoGrants.room_create", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_list": {"fullname": "livekit.api.VideoGrants.room_list", "modulename": "livekit.api", "qualname": "VideoGrants.room_list", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_record": {"fullname": "livekit.api.VideoGrants.room_record", "modulename": "livekit.api", "qualname": "VideoGrants.room_record", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_admin": {"fullname": "livekit.api.VideoGrants.room_admin", "modulename": "livekit.api", "qualname": "VideoGrants.room_admin", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_join": {"fullname": "livekit.api.VideoGrants.room_join", "modulename": "livekit.api", "qualname": "VideoGrants.room_join", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room": {"fullname": "livekit.api.VideoGrants.room", "modulename": "livekit.api", "qualname": "VideoGrants.room", "kind": "variable", "doc": "

\n", "annotation": ": str", "default_value": "''"}, "livekit.api.VideoGrants.can_publish": {"fullname": "livekit.api.VideoGrants.can_publish", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_subscribe": {"fullname": "livekit.api.VideoGrants.can_subscribe", "modulename": "livekit.api", "qualname": "VideoGrants.can_subscribe", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_publish_data": {"fullname": "livekit.api.VideoGrants.can_publish_data", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish_data", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_publish_sources": {"fullname": "livekit.api.VideoGrants.can_publish_sources", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish_sources", "kind": "variable", "doc": "

\n", "annotation": ": Optional[List[str]]", "default_value": "None"}, "livekit.api.VideoGrants.can_update_own_metadata": {"fullname": "livekit.api.VideoGrants.can_update_own_metadata", "modulename": "livekit.api", "qualname": "VideoGrants.can_update_own_metadata", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.ingress_admin": {"fullname": "livekit.api.VideoGrants.ingress_admin", "modulename": "livekit.api", "qualname": "VideoGrants.ingress_admin", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.hidden": {"fullname": "livekit.api.VideoGrants.hidden", "modulename": "livekit.api", "qualname": "VideoGrants.hidden", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.recorder": {"fullname": "livekit.api.VideoGrants.recorder", "modulename": "livekit.api", "qualname": "VideoGrants.recorder", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.agent": {"fullname": "livekit.api.VideoGrants.agent", "modulename": "livekit.api", "qualname": "VideoGrants.agent", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.SIPGrants": {"fullname": "livekit.api.SIPGrants", "modulename": "livekit.api", "qualname": "SIPGrants", "kind": "class", "doc": "

\n"}, "livekit.api.SIPGrants.__init__": {"fullname": "livekit.api.SIPGrants.__init__", "modulename": "livekit.api", "qualname": "SIPGrants.__init__", "kind": "function", "doc": "

\n", "signature": "(admin: bool = False, call: bool = False)"}, "livekit.api.SIPGrants.admin": {"fullname": "livekit.api.SIPGrants.admin", "modulename": "livekit.api", "qualname": "SIPGrants.admin", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "False"}, "livekit.api.SIPGrants.call": {"fullname": "livekit.api.SIPGrants.call", "modulename": "livekit.api", "qualname": "SIPGrants.call", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "False"}, "livekit.api.AccessToken": {"fullname": "livekit.api.AccessToken", "modulename": "livekit.api", "qualname": "AccessToken", "kind": "class", "doc": "

\n"}, "livekit.api.AccessToken.__init__": {"fullname": "livekit.api.AccessToken.__init__", "modulename": "livekit.api", "qualname": "AccessToken.__init__", "kind": "function", "doc": "

\n", "signature": "(api_key: Optional[str] = None, api_secret: Optional[str] = None)"}, "livekit.api.AccessToken.ParticipantKind": {"fullname": "livekit.api.AccessToken.ParticipantKind", "modulename": "livekit.api", "qualname": "AccessToken.ParticipantKind", "kind": "variable", "doc": "

\n", "default_value": "typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent']"}, "livekit.api.AccessToken.api_key": {"fullname": "livekit.api.AccessToken.api_key", "modulename": "livekit.api", "qualname": "AccessToken.api_key", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.api_secret": {"fullname": "livekit.api.AccessToken.api_secret", "modulename": "livekit.api", "qualname": "AccessToken.api_secret", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.claims": {"fullname": "livekit.api.AccessToken.claims", "modulename": "livekit.api", "qualname": "AccessToken.claims", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.identity": {"fullname": "livekit.api.AccessToken.identity", "modulename": "livekit.api", "qualname": "AccessToken.identity", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.ttl": {"fullname": "livekit.api.AccessToken.ttl", "modulename": "livekit.api", "qualname": "AccessToken.ttl", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.with_ttl": {"fullname": "livekit.api.AccessToken.with_ttl", "modulename": "livekit.api", "qualname": "AccessToken.with_ttl", "kind": "function", "doc": "

\n", "signature": "(self, ttl: datetime.timedelta) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_grants": {"fullname": "livekit.api.AccessToken.with_grants", "modulename": "livekit.api", "qualname": "AccessToken.with_grants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tgrants: livekit.api.access_token.VideoGrants) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_sip_grants": {"fullname": "livekit.api.AccessToken.with_sip_grants", "modulename": "livekit.api", "qualname": "AccessToken.with_sip_grants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tgrants: livekit.api.access_token.SIPGrants) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_identity": {"fullname": "livekit.api.AccessToken.with_identity", "modulename": "livekit.api", "qualname": "AccessToken.with_identity", "kind": "function", "doc": "

\n", "signature": "(self, identity: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_kind": {"fullname": "livekit.api.AccessToken.with_kind", "modulename": "livekit.api", "qualname": "AccessToken.with_kind", "kind": "function", "doc": "

\n", "signature": "(\tself,\tkind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_name": {"fullname": "livekit.api.AccessToken.with_name", "modulename": "livekit.api", "qualname": "AccessToken.with_name", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_metadata": {"fullname": "livekit.api.AccessToken.with_metadata", "modulename": "livekit.api", "qualname": "AccessToken.with_metadata", "kind": "function", "doc": "

\n", "signature": "(self, metadata: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_attributes": {"fullname": "livekit.api.AccessToken.with_attributes", "modulename": "livekit.api", "qualname": "AccessToken.with_attributes", "kind": "function", "doc": "

\n", "signature": "(self, attributes: dict[str, str]) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_sha256": {"fullname": "livekit.api.AccessToken.with_sha256", "modulename": "livekit.api", "qualname": "AccessToken.with_sha256", "kind": "function", "doc": "

\n", "signature": "(self, sha256: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_room_preset": {"fullname": "livekit.api.AccessToken.with_room_preset", "modulename": "livekit.api", "qualname": "AccessToken.with_room_preset", "kind": "function", "doc": "

\n", "signature": "(self, preset: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_room_config": {"fullname": "livekit.api.AccessToken.with_room_config", "modulename": "livekit.api", "qualname": "AccessToken.with_room_config", "kind": "function", "doc": "

\n", "signature": "(\tself,\tconfig: room.RoomConfiguration) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.to_jwt": {"fullname": "livekit.api.AccessToken.to_jwt", "modulename": "livekit.api", "qualname": "AccessToken.to_jwt", "kind": "function", "doc": "

\n", "signature": "(self) -> str:", "funcdef": "def"}, "livekit.api.TokenVerifier": {"fullname": "livekit.api.TokenVerifier", "modulename": "livekit.api", "qualname": "TokenVerifier", "kind": "class", "doc": "

\n"}, "livekit.api.TokenVerifier.__init__": {"fullname": "livekit.api.TokenVerifier.__init__", "modulename": "livekit.api", "qualname": "TokenVerifier.__init__", "kind": "function", "doc": "

\n", "signature": "(\tapi_key: Optional[str] = None,\tapi_secret: Optional[str] = None,\t*,\tleeway: datetime.timedelta = datetime.timedelta(seconds=60))"}, "livekit.api.TokenVerifier.api_key": {"fullname": "livekit.api.TokenVerifier.api_key", "modulename": "livekit.api", "qualname": "TokenVerifier.api_key", "kind": "variable", "doc": "

\n"}, "livekit.api.TokenVerifier.api_secret": {"fullname": "livekit.api.TokenVerifier.api_secret", "modulename": "livekit.api", "qualname": "TokenVerifier.api_secret", "kind": "variable", "doc": "

\n"}, "livekit.api.TokenVerifier.verify": {"fullname": "livekit.api.TokenVerifier.verify", "modulename": "livekit.api", "qualname": "TokenVerifier.verify", "kind": "function", "doc": "

\n", "signature": "(self, token: str) -> livekit.api.access_token.Claims:", "funcdef": "def"}, "livekit.api.WebhookReceiver": {"fullname": "livekit.api.WebhookReceiver", "modulename": "livekit.api", "qualname": "WebhookReceiver", "kind": "class", "doc": "

\n"}, "livekit.api.WebhookReceiver.__init__": {"fullname": "livekit.api.WebhookReceiver.__init__", "modulename": "livekit.api", "qualname": "WebhookReceiver.__init__", "kind": "function", "doc": "

\n", "signature": "(token_verifier: livekit.api.access_token.TokenVerifier)"}, "livekit.api.WebhookReceiver.receive": {"fullname": "livekit.api.WebhookReceiver.receive", "modulename": "livekit.api", "qualname": "WebhookReceiver.receive", "kind": "function", "doc": "

\n", "signature": "(self, body: str, auth_token: str) -> webhook.WebhookEvent:", "funcdef": "def"}, "livekit.api.TwirpError": {"fullname": "livekit.api.TwirpError", "modulename": "livekit.api", "qualname": "TwirpError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "livekit.api.TwirpError.__init__": {"fullname": "livekit.api.TwirpError.__init__", "modulename": "livekit.api", "qualname": "TwirpError.__init__", "kind": "function", "doc": "

\n", "signature": "(code: str, msg: str)"}, "livekit.api.TwirpError.code": {"fullname": "livekit.api.TwirpError.code", "modulename": "livekit.api", "qualname": "TwirpError.code", "kind": "variable", "doc": "

\n", "annotation": ": str"}, "livekit.api.TwirpError.message": {"fullname": "livekit.api.TwirpError.message", "modulename": "livekit.api", "qualname": "TwirpError.message", "kind": "variable", "doc": "

\n", "annotation": ": str"}, "livekit.api.TwirpErrorCode": {"fullname": "livekit.api.TwirpErrorCode", "modulename": "livekit.api", "qualname": "TwirpErrorCode", "kind": "class", "doc": "

\n"}, "livekit.api.TwirpErrorCode.CANCELED": {"fullname": "livekit.api.TwirpErrorCode.CANCELED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.CANCELED", "kind": "variable", "doc": "

\n", "default_value": "'canceled'"}, "livekit.api.TwirpErrorCode.UNKNOWN": {"fullname": "livekit.api.TwirpErrorCode.UNKNOWN", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNKNOWN", "kind": "variable", "doc": "

\n", "default_value": "'unknown'"}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"fullname": "livekit.api.TwirpErrorCode.INVALID_ARGUMENT", "modulename": "livekit.api", "qualname": "TwirpErrorCode.INVALID_ARGUMENT", "kind": "variable", "doc": "

\n", "default_value": "'invalid_argument'"}, "livekit.api.TwirpErrorCode.MALFORMED": {"fullname": "livekit.api.TwirpErrorCode.MALFORMED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.MALFORMED", "kind": "variable", "doc": "

\n", "default_value": "'malformed'"}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"fullname": "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.DEADLINE_EXCEEDED", "kind": "variable", "doc": "

\n", "default_value": "'deadline_exceeded'"}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"fullname": "livekit.api.TwirpErrorCode.NOT_FOUND", "modulename": "livekit.api", "qualname": "TwirpErrorCode.NOT_FOUND", "kind": "variable", "doc": "

\n", "default_value": "'not_found'"}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"fullname": "livekit.api.TwirpErrorCode.BAD_ROUTE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.BAD_ROUTE", "kind": "variable", "doc": "

\n", "default_value": "'bad_route'"}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"fullname": "livekit.api.TwirpErrorCode.ALREADY_EXISTS", "modulename": "livekit.api", "qualname": "TwirpErrorCode.ALREADY_EXISTS", "kind": "variable", "doc": "

\n", "default_value": "'already_exists'"}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"fullname": "livekit.api.TwirpErrorCode.PERMISSION_DENIED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.PERMISSION_DENIED", "kind": "variable", "doc": "

\n", "default_value": "'permission_denied'"}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"fullname": "livekit.api.TwirpErrorCode.UNAUTHENTICATED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNAUTHENTICATED", "kind": "variable", "doc": "

\n", "default_value": "'unauthenticated'"}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"fullname": "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.RESOURCE_EXHAUSTED", "kind": "variable", "doc": "

\n", "default_value": "'resource_exhausted'"}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"fullname": "livekit.api.TwirpErrorCode.FAILED_PRECONDITION", "modulename": "livekit.api", "qualname": "TwirpErrorCode.FAILED_PRECONDITION", "kind": "variable", "doc": "

\n", "default_value": "'failed_precondition'"}, "livekit.api.TwirpErrorCode.ABORTED": {"fullname": "livekit.api.TwirpErrorCode.ABORTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.ABORTED", "kind": "variable", "doc": "

\n", "default_value": "'aborted'"}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"fullname": "livekit.api.TwirpErrorCode.OUT_OF_RANGE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.OUT_OF_RANGE", "kind": "variable", "doc": "

\n", "default_value": "'out_of_range'"}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"fullname": "livekit.api.TwirpErrorCode.UNIMPLEMENTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNIMPLEMENTED", "kind": "variable", "doc": "

\n", "default_value": "'unimplemented'"}, "livekit.api.TwirpErrorCode.INTERNAL": {"fullname": "livekit.api.TwirpErrorCode.INTERNAL", "modulename": "livekit.api", "qualname": "TwirpErrorCode.INTERNAL", "kind": "variable", "doc": "

\n", "default_value": "'internal'"}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"fullname": "livekit.api.TwirpErrorCode.UNAVAILABLE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNAVAILABLE", "kind": "variable", "doc": "

\n", "default_value": "'unavailable'"}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"fullname": "livekit.api.TwirpErrorCode.DATA_LOSS", "modulename": "livekit.api", "qualname": "TwirpErrorCode.DATA_LOSS", "kind": "variable", "doc": "

\n", "default_value": "'dataloss'"}, "livekit.api.agent_dispatch_service": {"fullname": "livekit.api.agent_dispatch_service", "modulename": "livekit.api.agent_dispatch_service", "kind": "module", "doc": "

\n"}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService", "kind": "class", "doc": "

Manage agent dispatches. Service APIs require roomAdmin permissions.

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nagent_dispatch = lkapi.agent_dispatch\n
\n
\n", "bases": "livekit.api._service.Service"}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.__init__", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.create_dispatch", "kind": "function", "doc": "

Create an explicit dispatch for an agent to join a room.

\n\n

To use explicit dispatch, your agent must be registered with an agentName.

\n\n
Arguments:
\n\n
    \n
  • req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
  • \n
\n\n
Returns:
\n\n
\n

AgentDispatch: The created agent dispatch object

\n
\n", "signature": "(\tself,\treq: agent_dispatch.CreateAgentDispatchRequest) -> agent_dispatch.AgentDispatch:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.delete_dispatch", "kind": "function", "doc": "

Delete an explicit dispatch for an agent in a room.

\n\n
Arguments:
\n\n
    \n
  • dispatch_id (str): ID of the dispatch to delete
  • \n
  • room_name (str): Name of the room containing the dispatch
  • \n
\n\n
Returns:
\n\n
\n

AgentDispatch: The deleted agent dispatch object

\n
\n", "signature": "(self, dispatch_id: str, room_name: str) -> agent_dispatch.AgentDispatch:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.list_dispatch", "kind": "function", "doc": "

List all agent dispatches in a room.

\n\n
Arguments:
\n\n
    \n
  • room_name (str): Name of the room to list dispatches from
  • \n
\n\n
Returns:
\n\n
\n

list[AgentDispatch]: List of agent dispatch objects in the room

\n
\n", "signature": "(self, room_name: str) -> list[agent_dispatch.AgentDispatch]:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.get_dispatch", "kind": "function", "doc": "

Get an Agent dispatch by ID

\n\n
Arguments:
\n\n
    \n
  • dispatch_id (str): ID of the dispatch to retrieve
  • \n
  • room_name (str): Name of the room containing the dispatch
  • \n
\n\n
Returns:
\n\n
\n

Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise

\n
\n", "signature": "(\tself,\tdispatch_id: str,\troom_name: str) -> Optional[agent_dispatch.AgentDispatch]:", "funcdef": "async def"}, "livekit.api.egress_service": {"fullname": "livekit.api.egress_service", "modulename": "livekit.api.egress_service", "kind": "module", "doc": "

\n"}, "livekit.api.egress_service.EgressService": {"fullname": "livekit.api.egress_service.EgressService", "modulename": "livekit.api.egress_service", "qualname": "EgressService", "kind": "class", "doc": "

Client for LiveKit Egress Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\negress = lkapi.egress\n
\n
\n\n

Also see https://docs.livekit.io/home/egress/overview/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.egress_service.EgressService.__init__": {"fullname": "livekit.api.egress_service.EgressService.__init__", "modulename": "livekit.api.egress_service", "qualname": "EgressService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"fullname": "livekit.api.egress_service.EgressService.start_room_composite_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_room_composite_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.RoomCompositeEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_web_egress": {"fullname": "livekit.api.egress_service.EgressService.start_web_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_web_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.WebEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_participant_egress": {"fullname": "livekit.api.egress_service.EgressService.start_participant_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_participant_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.ParticipantEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"fullname": "livekit.api.egress_service.EgressService.start_track_composite_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_track_composite_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.TrackCompositeEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_track_egress": {"fullname": "livekit.api.egress_service.EgressService.start_track_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_track_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.TrackEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.update_layout": {"fullname": "livekit.api.egress_service.EgressService.update_layout", "modulename": "livekit.api.egress_service", "qualname": "EgressService.update_layout", "kind": "function", "doc": "

\n", "signature": "(self, update: egress.UpdateLayoutRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.update_stream": {"fullname": "livekit.api.egress_service.EgressService.update_stream", "modulename": "livekit.api.egress_service", "qualname": "EgressService.update_stream", "kind": "function", "doc": "

\n", "signature": "(self, update: egress.UpdateStreamRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.list_egress": {"fullname": "livekit.api.egress_service.EgressService.list_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.list_egress", "kind": "function", "doc": "

\n", "signature": "(self, list: egress.ListEgressRequest) -> egress.ListEgressResponse:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.stop_egress": {"fullname": "livekit.api.egress_service.EgressService.stop_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.stop_egress", "kind": "function", "doc": "

\n", "signature": "(self, stop: egress.StopEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service": {"fullname": "livekit.api.ingress_service", "modulename": "livekit.api.ingress_service", "kind": "module", "doc": "

\n"}, "livekit.api.ingress_service.IngressService": {"fullname": "livekit.api.ingress_service.IngressService", "modulename": "livekit.api.ingress_service", "qualname": "IngressService", "kind": "class", "doc": "

Client for LiveKit Ingress Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\ningress = lkapi.ingress\n
\n
\n\n

Also see https://docs.livekit.io/home/ingress/overview/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.ingress_service.IngressService.__init__": {"fullname": "livekit.api.ingress_service.IngressService.__init__", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.ingress_service.IngressService.create_ingress": {"fullname": "livekit.api.ingress_service.IngressService.create_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.create_ingress", "kind": "function", "doc": "

\n", "signature": "(self, create: ingress.CreateIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.update_ingress": {"fullname": "livekit.api.ingress_service.IngressService.update_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.update_ingress", "kind": "function", "doc": "

\n", "signature": "(self, update: ingress.UpdateIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.list_ingress": {"fullname": "livekit.api.ingress_service.IngressService.list_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.list_ingress", "kind": "function", "doc": "

\n", "signature": "(self, list: ingress.ListIngressRequest) -> ingress.ListIngressResponse:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.delete_ingress": {"fullname": "livekit.api.ingress_service.IngressService.delete_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.delete_ingress", "kind": "function", "doc": "

\n", "signature": "(self, delete: ingress.DeleteIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.room_service": {"fullname": "livekit.api.room_service", "modulename": "livekit.api.room_service", "kind": "module", "doc": "

\n"}, "livekit.api.room_service.RoomService": {"fullname": "livekit.api.room_service.RoomService", "modulename": "livekit.api.room_service", "qualname": "RoomService", "kind": "class", "doc": "

Client for LiveKit RoomService API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nroom_service = lkapi.room\n
\n
\n\n

Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.room_service.RoomService.__init__": {"fullname": "livekit.api.room_service.RoomService.__init__", "modulename": "livekit.api.room_service", "qualname": "RoomService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.room_service.RoomService.create_room": {"fullname": "livekit.api.room_service.RoomService.create_room", "modulename": "livekit.api.room_service", "qualname": "RoomService.create_room", "kind": "function", "doc": "

\n", "signature": "(self, create: room.CreateRoomRequest) -> models.Room:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.list_rooms": {"fullname": "livekit.api.room_service.RoomService.list_rooms", "modulename": "livekit.api.room_service", "qualname": "RoomService.list_rooms", "kind": "function", "doc": "

\n", "signature": "(self, list: room.ListRoomsRequest) -> room.ListRoomsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.delete_room": {"fullname": "livekit.api.room_service.RoomService.delete_room", "modulename": "livekit.api.room_service", "qualname": "RoomService.delete_room", "kind": "function", "doc": "

\n", "signature": "(self, delete: room.DeleteRoomRequest) -> room.DeleteRoomResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_room_metadata": {"fullname": "livekit.api.room_service.RoomService.update_room_metadata", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_room_metadata", "kind": "function", "doc": "

\n", "signature": "(self, update: room.UpdateRoomMetadataRequest) -> models.Room:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.list_participants": {"fullname": "livekit.api.room_service.RoomService.list_participants", "modulename": "livekit.api.room_service", "qualname": "RoomService.list_participants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: room.ListParticipantsRequest) -> room.ListParticipantsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.get_participant": {"fullname": "livekit.api.room_service.RoomService.get_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.get_participant", "kind": "function", "doc": "

\n", "signature": "(self, get: room.RoomParticipantIdentity) -> models.ParticipantInfo:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.remove_participant": {"fullname": "livekit.api.room_service.RoomService.remove_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.remove_participant", "kind": "function", "doc": "

\n", "signature": "(\tself,\tremove: room.RoomParticipantIdentity) -> room.RemoveParticipantResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.mute_published_track": {"fullname": "livekit.api.room_service.RoomService.mute_published_track", "modulename": "livekit.api.room_service", "qualname": "RoomService.mute_published_track", "kind": "function", "doc": "

\n", "signature": "(self, update: room.MuteRoomTrackRequest) -> room.MuteRoomTrackResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_participant": {"fullname": "livekit.api.room_service.RoomService.update_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_participant", "kind": "function", "doc": "

\n", "signature": "(self, update: room.UpdateParticipantRequest) -> models.ParticipantInfo:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_subscriptions": {"fullname": "livekit.api.room_service.RoomService.update_subscriptions", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_subscriptions", "kind": "function", "doc": "

\n", "signature": "(\tself,\tupdate: room.UpdateSubscriptionsRequest) -> room.UpdateSubscriptionsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.send_data": {"fullname": "livekit.api.room_service.RoomService.send_data", "modulename": "livekit.api.room_service", "qualname": "RoomService.send_data", "kind": "function", "doc": "

\n", "signature": "(self, send: room.SendDataRequest) -> room.SendDataResponse:", "funcdef": "async def"}, "livekit.api.sip_service": {"fullname": "livekit.api.sip_service", "modulename": "livekit.api.sip_service", "kind": "module", "doc": "

\n"}, "livekit.api.sip_service.SipService": {"fullname": "livekit.api.sip_service.SipService", "modulename": "livekit.api.sip_service", "qualname": "SipService", "kind": "class", "doc": "

Client for LiveKit SIP Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nsip_service = lkapi.sip\n
\n
\n", "bases": "livekit.api._service.Service"}, "livekit.api.sip_service.SipService.__init__": {"fullname": "livekit.api.sip_service.SipService.__init__", "modulename": "livekit.api.sip_service", "qualname": "SipService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.sip_service.SipService.create_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, create: sip.CreateSIPTrunkRequest) -> sip.SIPTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_inbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_inbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPInboundTrunkRequest) -> sip.SIPInboundTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_outbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_outbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPOutboundTrunkRequest) -> sip.SIPOutboundTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, list: sip.ListSIPTrunkRequest) -> sip.ListSIPTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_inbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_inbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPInboundTrunkRequest) -> sip.ListSIPInboundTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_outbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_outbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPOutboundTrunkRequest) -> sip.ListSIPOutboundTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.delete_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.delete_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, delete: sip.DeleteSIPTrunkRequest) -> sip.SIPTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.create_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.list_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPDispatchRuleRequest) -> sip.ListSIPDispatchRuleResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.delete_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.delete_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tdelete: sip.DeleteSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_participant": {"fullname": "livekit.api.sip_service.SipService.create_sip_participant", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_participant", "kind": "function", "doc": "

\n", "signature": "(self, create: sip.CreateSIPParticipantRequest) -> sip.SIPParticipantInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"fullname": "livekit.api.sip_service.SipService.transfer_sip_participant", "modulename": "livekit.api.sip_service", "qualname": "SipService.transfer_sip_participant", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttransfer: sip.TransferSIPParticipantRequest) -> sip.SIPParticipantInfo:", "funcdef": "async def"}}, "docInfo": {"livekit.api": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 42}, "livekit.api.LiveKitAPI": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 123}, "livekit.api.LiveKitAPI.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 172, "bases": 0, "doc": 88}, "livekit.api.LiveKitAPI.agent_dispatch": {"qualname": 3, "fullname": 5, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "livekit.api.LiveKitAPI.room": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.ingress": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.egress": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.sip": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.VideoGrants": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 362, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_create": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_list": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_record": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_admin": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_join": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 4, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_subscribe": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish_data": {"qualname": 4, "fullname": 6, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish_sources": {"qualname": 4, "fullname": 6, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_update_own_metadata": {"qualname": 5, "fullname": 7, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.ingress_admin": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.hidden": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.recorder": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.agent": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.admin": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.call": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "livekit.api.AccessToken.ParticipantKind": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 18, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.api_key": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.api_secret": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.claims": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.identity": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.ttl": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_ttl": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_grants": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_sip_grants": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_identity": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_kind": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 92, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_metadata": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_attributes": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_sha256": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_room_preset": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_room_config": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 3}, "livekit.api.AccessToken.to_jwt": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 101, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.api_key": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.api_secret": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.verify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver.receive": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.TwirpError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "livekit.api.TwirpError.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "livekit.api.TwirpError.code": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpError.message": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.CANCELED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNKNOWN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.MALFORMED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.ABORTED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.INTERNAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 84}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 65}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 64}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 51}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 63}, "livekit.api.egress_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 88}, "livekit.api.egress_service.EgressService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_web_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_participant_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_track_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.update_layout": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.update_stream": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.list_egress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.stop_egress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 88}, "livekit.api.ingress_service.IngressService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.create_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.update_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.list_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.delete_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 96}, "livekit.api.room_service.RoomService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.create_room": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.list_rooms": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.delete_room": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_room_metadata": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.list_participants": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.get_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.remove_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.mute_published_track": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_subscriptions": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.send_data": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 80}, "livekit.api.sip_service.SipService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_participant": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}}, "length": 135, "save": true}, "index": {"qualname": {"root": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 7}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 2, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 20}}}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 8}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 13, "s": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 13}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.room_record": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.recorder": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 8, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 11}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 4}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_subscribe": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 17}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 9}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.call": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.claims": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.code": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 2}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_join": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 6, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.message": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.hidden": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 2}}, "o": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 19}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 3}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 7}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}}, "fullname": {"root": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}, "livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 135, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 7}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.api_secret": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.api_secret": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}, "livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 135}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 20}}}}}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.4142135623730951}}, "df": 9, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 11}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 24, "s": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 13}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.room_record": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.recorder": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.4142135623730951}}, "df": 13, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 11}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.4142135623730951}}, "df": 17, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 4}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_subscribe": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 55}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 17}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 9}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.call": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.claims": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.code": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 2}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_join": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 6, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.message": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.hidden": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 2}}, "o": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 19}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 3}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 7}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}}, "annotation": {"root": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 24, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 10}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 5}}}}}}, "default_value": {"root": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.4142135623730951}}, "df": 20, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 11}}, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "x": {"2": {"7": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.ParticipantKind": {"tf": 3.1622776601683795}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.4142135623730951}}, "df": 20}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}}, "df": 3}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "signature": {"root": {"3": {"9": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_kind": {"tf": 3.1622776601683795}}, "df": 2}, "docs": {}, "df": 0}, "5": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}, "6": {"0": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 11.832159566199232}, "livekit.api.VideoGrants.__init__": {"tf": 17}, "livekit.api.SIPGrants.__init__": {"tf": 5.656854249492381}, "livekit.api.AccessToken.__init__": {"tf": 6.48074069840786}, "livekit.api.AccessToken.with_ttl": {"tf": 6}, "livekit.api.AccessToken.with_grants": {"tf": 6.782329983125268}, "livekit.api.AccessToken.with_sip_grants": {"tf": 6.782329983125268}, "livekit.api.AccessToken.with_identity": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_kind": {"tf": 8.306623862918075}, "livekit.api.AccessToken.with_name": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_metadata": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_attributes": {"tf": 6.48074069840786}, "livekit.api.AccessToken.with_sha256": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_room_preset": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_room_config": {"tf": 6.164414002968976}, "livekit.api.AccessToken.to_jwt": {"tf": 3.4641016151377544}, "livekit.api.TokenVerifier.__init__": {"tf": 9.16515138991168}, "livekit.api.TokenVerifier.verify": {"tf": 5.656854249492381}, "livekit.api.WebhookReceiver.__init__": {"tf": 4.898979485566356}, "livekit.api.WebhookReceiver.receive": {"tf": 5.656854249492381}, "livekit.api.TwirpError.__init__": {"tf": 4.47213595499958}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 6.928203230275509}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 5.477225575051661}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 5.656854249492381}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 5.385164807134504}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 6.324555320336759}, "livekit.api.egress_service.EgressService.__init__": {"tf": 6.928203230275509}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 6.928203230275509}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.__init__": {"tf": 6.928203230275509}, "livekit.api.room_service.RoomService.create_room": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.delete_room": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.list_participants": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.get_participant": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_participant": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.send_data": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.__init__": {"tf": 6.928203230275509}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 5.477225575051661}}, "df": 66, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 8, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 3.3166247903554}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 5}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1.4142135623730951}, "livekit.api.TwirpError.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.7320508075688772}}, "df": 22}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 8}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "f": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 54}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 5}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.4142135623730951}}, "df": 13, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 2.449489742783178}, "livekit.api.VideoGrants.__init__": {"tf": 3.3166247903554}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.4142135623730951}}, "df": 21}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.SIPGrants.__init__": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}}}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 8}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1.4142135623730951}, "livekit.api.WebhookReceiver.__init__": {"tf": 1.4142135623730951}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 14, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 5}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.__init__": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.create_room": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 2.23606797749979}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.__init__": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 2.449489742783178}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.send_data": {"tf": 1.4142135623730951}}, "df": 16, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 3.605551275463989}, "livekit.api.SIPGrants.__init__": {"tf": 1.4142135623730951}}, "df": 2}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.list_egress": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.list_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 13}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.delete_room": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.delete_room": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.TwirpError.__init__": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 4}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.4142135623730951}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 3}}}}}}}}}}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.SIPGrants.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.4142135623730951}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 8}}}}}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}}}, "doc": {"root": {"3": {"9": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"livekit.api": {"tf": 3.872983346207417}, "livekit.api.LiveKitAPI": {"tf": 9.273618495495704}, "livekit.api.LiveKitAPI.__init__": {"tf": 5.916079783099616}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.room": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.ingress": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.egress": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.sip": {"tf": 2.449489742783178}, "livekit.api.VideoGrants": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_create": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_list": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_record": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_admin": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_join": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.hidden": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.recorder": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.agent": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.__init__": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.admin": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.call": {"tf": 1.7320508075688772}, "livekit.api.AccessToken": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.__init__": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.api_key": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.api_secret": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.claims": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.identity": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.ttl": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_ttl": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_grants": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_identity": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_kind": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_name": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_metadata": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_attributes": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_sha256": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_room_preset": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_room_config": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.to_jwt": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.__init__": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.api_key": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.api_secret": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.verify": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver.__init__": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver.receive": {"tf": 1.7320508075688772}, "livekit.api.TwirpError": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.__init__": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.code": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.message": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 7.280109889280518}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 5.196152422706632}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 5.196152422706632}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 4.69041575982343}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 5.0990195135927845}, "livekit.api.egress_service": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService": {"tf": 7.483314773547883}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService": {"tf": 7.483314773547883}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.7320508075688772}, "livekit.api.room_service": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService": {"tf": 7.615773105863909}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.send_data": {"tf": 1.7320508075688772}, "livekit.api.sip_service": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService": {"tf": 7.211102550927978}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.7320508075688772}}, "df": 135, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.LiveKitAPI.__init__": {"tf": 2}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 2}, "livekit.api.ingress_service.IngressService": {"tf": 2}, "livekit.api.room_service.RoomService": {"tf": 2.23606797749979}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 13, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 8}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.7320508075688772}}, "df": 2, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "[": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 10, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 9}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 3}}}, "a": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 2}, "livekit.api.LiveKitAPI.__init__": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService": {"tf": 2}, "livekit.api.ingress_service.IngressService": {"tf": 2}, "livekit.api.room_service.RoomService": {"tf": 2}, "livekit.api.sip_service.SipService": {"tf": 2}}, "df": 12, "s": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 2}}}, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3, "d": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 7, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 3}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 5}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 8}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 8}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.7320508075688772}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}, "q": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}}, "df": 2, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 6}}}}}}}, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 7}, "o": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}}}}, "f": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 2}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.7320508075688772}}, "df": 2}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 2.23606797749979}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 2.23606797749979}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}, "e": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 2}}, "df": 10}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 9}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 8}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}, "y": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index 4c965977..6922de3b 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -14,7 +14,11 @@ """LiveKit Server APIs for Python -See https://docs.livekit.io/home/server/ for docs and examples. +Manage rooms, participants, egress, ingress, SIP, and Agent dispatch. + +Primary entry point is `LiveKitAPI`. + +See https://docs.livekit.io/reference/server/server-apis for more information. """ # flake8: noqa @@ -33,3 +37,19 @@ from .access_token import VideoGrants, SIPGrants, AccessToken, TokenVerifier from .webhook import WebhookReceiver from .version import __version__ + +__all__ = [ + "LiveKitAPI", + "room_service", + "egress_service", + "ingress_service", + "sip_service", + "agent_dispatch_service", + "VideoGrants", + "SIPGrants", + "AccessToken", + "TokenVerifier", + "WebhookReceiver", + "TwirpError", + "TwirpErrorCode", +] diff --git a/livekit-api/livekit/api/agent_dispatch_service.py b/livekit-api/livekit/api/agent_dispatch_service.py index 769bf200..a4f4da22 100644 --- a/livekit-api/livekit/api/agent_dispatch_service.py +++ b/livekit-api/livekit/api/agent_dispatch_service.py @@ -1,16 +1,23 @@ import aiohttp from typing import Optional -from livekit.protocol import agent_dispatch as proto_agent_dispatch +from livekit.protocol.agent_dispatch import CreateAgentDispatchRequest, AgentDispatch, DeleteAgentDispatchRequest, ListAgentDispatchRequest, ListAgentDispatchResponse from ._service import Service from .access_token import VideoGrants SVC = "AgentDispatchService" +"""@private""" class AgentDispatchService(Service): """Manage agent dispatches. Service APIs require roomAdmin permissions. - An easier way to construct this service is via LiveKitAPI.agent_dispatch. + Recommended way to use this service is via `livekit.api.LiveKitAPI`: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + agent_dispatch = lkapi.agent_dispatch + ``` """ def __init__( @@ -19,8 +26,8 @@ def __init__( super().__init__(session, url, api_key, api_secret) async def create_dispatch( - self, req: proto_agent_dispatch.CreateAgentDispatchRequest - ) -> proto_agent_dispatch.AgentDispatch: + self, req: CreateAgentDispatchRequest + ) -> AgentDispatch: """Create an explicit dispatch for an agent to join a room. To use explicit dispatch, your agent must be registered with an `agentName`. @@ -36,12 +43,12 @@ async def create_dispatch( "CreateDispatch", req, self._auth_header(VideoGrants(room_admin=True, room=req.room)), - proto_agent_dispatch.AgentDispatch, + AgentDispatch, ) async def delete_dispatch( self, dispatch_id: str, room_name: str - ) -> proto_agent_dispatch.AgentDispatch: + ) -> AgentDispatch: """Delete an explicit dispatch for an agent in a room. Args: @@ -54,17 +61,17 @@ async def delete_dispatch( return await self._client.request( SVC, "DeleteDispatch", - proto_agent_dispatch.DeleteAgentDispatchRequest( + DeleteAgentDispatchRequest( dispatch_id=dispatch_id, room=room_name, ), self._auth_header(VideoGrants(room_admin=True, room=room_name)), - proto_agent_dispatch.AgentDispatch, + AgentDispatch, ) async def list_dispatch( self, room_name: str - ) -> list[proto_agent_dispatch.AgentDispatch]: + ) -> list[AgentDispatch]: """List all agent dispatches in a room. Args: @@ -76,15 +83,15 @@ async def list_dispatch( res = await self._client.request( SVC, "ListDispatch", - proto_agent_dispatch.ListAgentDispatchRequest(room=room_name), + ListAgentDispatchRequest(room=room_name), self._auth_header(VideoGrants(room_admin=True, room=room_name)), - proto_agent_dispatch.ListAgentDispatchResponse, + ListAgentDispatchResponse, ) return list(res.agent_dispatches) async def get_dispatch( self, dispatch_id: str, room_name: str - ) -> Optional[proto_agent_dispatch.AgentDispatch]: + ) -> Optional[AgentDispatch]: """Get an Agent dispatch by ID Args: @@ -97,11 +104,11 @@ async def get_dispatch( res = await self._client.request( SVC, "ListDispatch", - proto_agent_dispatch.ListAgentDispatchRequest( + ListAgentDispatchRequest( dispatch_id=dispatch_id, room=room_name ), self._auth_header(VideoGrants(room_admin=True, room=room_name)), - proto_agent_dispatch.ListAgentDispatchResponse, + ListAgentDispatchResponse, ) if len(res.agent_dispatches) > 0: return res.agent_dispatches[0] diff --git a/livekit-api/livekit/api/egress_service.py b/livekit-api/livekit/api/egress_service.py index a875459b..37efcbd0 100644 --- a/livekit-api/livekit/api/egress_service.py +++ b/livekit-api/livekit/api/egress_service.py @@ -1,112 +1,124 @@ import aiohttp -from livekit.protocol import egress as proto_egress +from livekit.protocol.egress import RoomCompositeEgressRequest, WebEgressRequest, ParticipantEgressRequest, TrackCompositeEgressRequest, TrackEgressRequest, UpdateLayoutRequest, UpdateStreamRequest, ListEgressRequest, StopEgressRequest, EgressInfo, ListEgressResponse from ._service import Service from .access_token import VideoGrants SVC = "Egress" - +"""@private""" class EgressService(Service): + """Client for LiveKit Egress Service API + + Recommended way to use this service is via `livekit.api.LiveKitAPI`: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + egress = lkapi.egress + ``` + + Also see https://docs.livekit.io/home/egress/overview/ + """ def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): super().__init__(session, url, api_key, api_secret) async def start_room_composite_egress( - self, start: proto_egress.RoomCompositeEgressRequest - ) -> proto_egress.EgressInfo: + self, start: RoomCompositeEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StartRoomCompositeEgress", start, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def start_web_egress( - self, start: proto_egress.WebEgressRequest - ) -> proto_egress.EgressInfo: + self, start: WebEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StartWebEgress", start, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def start_participant_egress( - self, start: proto_egress.ParticipantEgressRequest - ) -> proto_egress.EgressInfo: + self, start: ParticipantEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StartParticipantEgress", start, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def start_track_composite_egress( - self, start: proto_egress.TrackCompositeEgressRequest - ) -> proto_egress.EgressInfo: + self, start: TrackCompositeEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StartTrackCompositeEgress", start, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def start_track_egress( - self, start: proto_egress.TrackEgressRequest - ) -> proto_egress.EgressInfo: + self, start: TrackEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StartTrackEgress", start, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def update_layout( - self, update: proto_egress.UpdateLayoutRequest - ) -> proto_egress.EgressInfo: + self, update: UpdateLayoutRequest + ) -> EgressInfo: return await self._client.request( SVC, "UpdateLayout", update, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def update_stream( - self, update: proto_egress.UpdateStreamRequest - ) -> proto_egress.EgressInfo: + self, update: UpdateStreamRequest + ) -> EgressInfo: return await self._client.request( SVC, "UpdateStream", update, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) async def list_egress( - self, list: proto_egress.ListEgressRequest - ) -> proto_egress.ListEgressResponse: + self, list: ListEgressRequest + ) -> ListEgressResponse: return await self._client.request( SVC, "ListEgress", list, self._auth_header(VideoGrants(room_record=True)), - proto_egress.ListEgressResponse, + ListEgressResponse, ) async def stop_egress( - self, stop: proto_egress.StopEgressRequest - ) -> proto_egress.EgressInfo: + self, stop: StopEgressRequest + ) -> EgressInfo: return await self._client.request( SVC, "StopEgress", stop, self._auth_header(VideoGrants(room_record=True)), - proto_egress.EgressInfo, + EgressInfo, ) diff --git a/livekit-api/livekit/api/ingress_service.py b/livekit-api/livekit/api/ingress_service.py index abf691ef..45eab6af 100644 --- a/livekit-api/livekit/api/ingress_service.py +++ b/livekit-api/livekit/api/ingress_service.py @@ -1,57 +1,69 @@ import aiohttp -from livekit.protocol import ingress as proto_ingress +from livekit.protocol.ingress import CreateIngressRequest, IngressInfo, UpdateIngressRequest, ListIngressRequest, DeleteIngressRequest, ListIngressResponse from ._service import Service from .access_token import VideoGrants SVC = "Ingress" - +"""@private""" class IngressService(Service): + """Client for LiveKit Ingress Service API + + Recommended way to use this service is via `livekit.api.LiveKitAPI`: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + ingress = lkapi.ingress + ``` + + Also see https://docs.livekit.io/home/ingress/overview/ + """ def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): super().__init__(session, url, api_key, api_secret) async def create_ingress( - self, create: proto_ingress.CreateIngressRequest - ) -> proto_ingress.IngressInfo: + self, create: CreateIngressRequest + ) -> IngressInfo: return await self._client.request( SVC, "CreateIngress", create, self._auth_header(VideoGrants(ingress_admin=True)), - proto_ingress.IngressInfo, + IngressInfo, ) async def update_ingress( - self, update: proto_ingress.UpdateIngressRequest - ) -> proto_ingress.IngressInfo: + self, update: UpdateIngressRequest + ) -> IngressInfo: return await self._client.request( SVC, "UpdateIngress", update, self._auth_header(VideoGrants(ingress_admin=True)), - proto_ingress.IngressInfo, + IngressInfo, ) async def list_ingress( - self, list: proto_ingress.ListIngressRequest - ) -> proto_ingress.ListIngressResponse: + self, list: ListIngressRequest + ) -> ListIngressResponse: return await self._client.request( SVC, "ListIngress", list, self._auth_header(VideoGrants(ingress_admin=True)), - proto_ingress.ListIngressResponse, + ListIngressResponse, ) async def delete_ingress( - self, delete: proto_ingress.DeleteIngressRequest - ) -> proto_ingress.IngressInfo: + self, delete: DeleteIngressRequest + ) -> IngressInfo: return await self._client.request( SVC, "DeleteIngress", delete, self._auth_header(VideoGrants(ingress_admin=True)), - proto_ingress.IngressInfo, + IngressInfo, ) diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 276f7043..73e38993 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -10,6 +10,8 @@ class LiveKitAPI: """LiveKit Server API Client + + This class is the main entrypoint, which exposes all services. Usage: @@ -28,6 +30,14 @@ def __init__( *, timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60), # 60 seconds ): + """Create a new LiveKitAPI instance. + + Args: + url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided) + api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided) + api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided) + timeout: Request timeout (default: 60 seconds) + """ url = url or os.getenv("LIVEKIT_URL") api_key = api_key or os.getenv("LIVEKIT_API_KEY") api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET") @@ -49,28 +59,39 @@ def __init__( @property def agent_dispatch(self) -> AgentDispatchService: - """See :class:`AgentDispatchService`""" + """Instance of the AgentDispatchService + + See `livekit.api.agent_dispatch_service.AgentDispatchService`""" return self._agent_dispatch @property def room(self) -> RoomService: - """See :class:`RoomService`""" + """Instance of the RoomService + + See `livekit.api.room_service.RoomService`""" return self._room @property def ingress(self) -> IngressService: - """See :class:`IngressService`""" + """Instance of the IngressService + + See `livekit.api.ingress_service.IngressService`""" return self._ingress @property def egress(self) -> EgressService: - """See :class:`EgressService`""" + """Instance of the EgressService + + See `livekit.api.egress_service.EgressService`""" return self._egress @property def sip(self) -> SipService: - """See: :class:`SipService`""" + """Instance of the SipService + + See `livekit.api.sip_service.SipService`""" return self._sip async def aclose(self): + """@private""" await self._session.close() diff --git a/livekit-api/livekit/api/room_service.py b/livekit-api/livekit/api/room_service.py index 18cd9257..0ef4e110 100644 --- a/livekit-api/livekit/api/room_service.py +++ b/livekit-api/livekit/api/room_service.py @@ -1,31 +1,25 @@ import aiohttp -from livekit.protocol.room import ( - CreateRoomRequest, - ListRoomsRequest, - DeleteRoomRequest, - ListRoomsResponse, - DeleteRoomResponse, - ListParticipantsRequest, - ListParticipantsResponse, - RoomParticipantIdentity, - MuteRoomTrackRequest, - MuteRoomTrackResponse, - UpdateParticipantRequest, - UpdateSubscriptionsRequest, - SendDataRequest, - SendDataResponse, - UpdateRoomMetadataRequest, - RemoveParticipantResponse, - UpdateSubscriptionsResponse, -) +from livekit.protocol.room import CreateRoomRequest, ListRoomsRequest, DeleteRoomRequest, ListRoomsResponse, DeleteRoomResponse, ListParticipantsRequest, ListParticipantsResponse, RoomParticipantIdentity, MuteRoomTrackRequest, MuteRoomTrackResponse, UpdateParticipantRequest, UpdateSubscriptionsRequest, SendDataRequest, SendDataResponse, UpdateRoomMetadataRequest, RemoveParticipantResponse, UpdateSubscriptionsResponse from livekit.protocol.models import Room, ParticipantInfo from ._service import Service from .access_token import VideoGrants SVC = "RoomService" - +"""@private""" class RoomService(Service): + """Client for LiveKit RoomService API + + Recommended way to use this service is via `livekit.api.LiveKitAPI`: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + room_service = lkapi.room + ``` + + Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/ + """ def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): diff --git a/livekit-api/livekit/api/sip_service.py b/livekit-api/livekit/api/sip_service.py index 6d3f122e..af8c1329 100644 --- a/livekit-api/livekit/api/sip_service.py +++ b/livekit-api/livekit/api/sip_service.py @@ -1,141 +1,151 @@ import aiohttp -from livekit.protocol import sip as proto_sip +from livekit.protocol.sip import CreateSIPTrunkRequest, SIPTrunkInfo, CreateSIPInboundTrunkRequest, SIPInboundTrunkInfo, CreateSIPOutboundTrunkRequest, SIPOutboundTrunkInfo, ListSIPTrunkRequest, ListSIPTrunkResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, DeleteSIPTrunkRequest, SIPDispatchRuleInfo, CreateSIPDispatchRuleRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, DeleteSIPDispatchRuleRequest, CreateSIPParticipantRequest, TransferSIPParticipantRequest, SIPParticipantInfo from ._service import Service from .access_token import VideoGrants, SIPGrants SVC = "SIP" - +"""@private""" class SipService(Service): + """Client for LiveKit SIP Service API + + Recommended way to use this service is via `livekit.api.LiveKitAPI`: + + ```python + from livekit import api + lkapi = api.LiveKitAPI() + sip_service = lkapi.sip + ``` + """ def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): super().__init__(session, url, api_key, api_secret) async def create_sip_trunk( - self, create: proto_sip.CreateSIPTrunkRequest - ) -> proto_sip.SIPTrunkInfo: + self, create: CreateSIPTrunkRequest + ) -> SIPTrunkInfo: return await self._client.request( SVC, "CreateSIPTrunk", create, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPTrunkInfo, + SIPTrunkInfo, ) async def create_sip_inbound_trunk( - self, create: proto_sip.CreateSIPInboundTrunkRequest - ) -> proto_sip.SIPInboundTrunkInfo: + self, create: CreateSIPInboundTrunkRequest + ) -> SIPInboundTrunkInfo: return await self._client.request( SVC, "CreateSIPInboundTrunk", create, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPInboundTrunkInfo, + SIPInboundTrunkInfo, ) async def create_sip_outbound_trunk( - self, create: proto_sip.CreateSIPOutboundTrunkRequest - ) -> proto_sip.SIPOutboundTrunkInfo: + self, create: CreateSIPOutboundTrunkRequest + ) -> SIPOutboundTrunkInfo: return await self._client.request( SVC, "CreateSIPOutboundTrunk", create, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPOutboundTrunkInfo, + SIPOutboundTrunkInfo, ) async def list_sip_trunk( - self, list: proto_sip.ListSIPTrunkRequest - ) -> proto_sip.ListSIPTrunkResponse: + self, list: ListSIPTrunkRequest + ) -> ListSIPTrunkResponse: return await self._client.request( SVC, "ListSIPTrunk", list, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.ListSIPTrunkResponse, + ListSIPTrunkResponse, ) async def list_sip_inbound_trunk( - self, list: proto_sip.ListSIPInboundTrunkRequest - ) -> proto_sip.ListSIPInboundTrunkResponse: + self, list: ListSIPInboundTrunkRequest + ) -> ListSIPInboundTrunkResponse: return await self._client.request( SVC, "ListSIPInboundTrunk", list, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.ListSIPInboundTrunkResponse, + ListSIPInboundTrunkResponse, ) async def list_sip_outbound_trunk( - self, list: proto_sip.ListSIPOutboundTrunkRequest - ) -> proto_sip.ListSIPOutboundTrunkResponse: + self, list: ListSIPOutboundTrunkRequest + ) -> ListSIPOutboundTrunkResponse: return await self._client.request( SVC, "ListSIPOutboundTrunk", list, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.ListSIPOutboundTrunkResponse, + ListSIPOutboundTrunkResponse, ) async def delete_sip_trunk( - self, delete: proto_sip.DeleteSIPTrunkRequest - ) -> proto_sip.SIPTrunkInfo: + self, delete: DeleteSIPTrunkRequest + ) -> SIPTrunkInfo: return await self._client.request( SVC, "DeleteSIPTrunk", delete, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPTrunkInfo, + SIPTrunkInfo, ) async def create_sip_dispatch_rule( - self, create: proto_sip.CreateSIPDispatchRuleRequest - ) -> proto_sip.SIPDispatchRuleInfo: + self, create: CreateSIPDispatchRuleRequest + ) -> SIPDispatchRuleInfo: return await self._client.request( SVC, "CreateSIPDispatchRule", create, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPDispatchRuleInfo, + SIPDispatchRuleInfo, ) async def list_sip_dispatch_rule( - self, list: proto_sip.ListSIPDispatchRuleRequest - ) -> proto_sip.ListSIPDispatchRuleResponse: + self, list: ListSIPDispatchRuleRequest + ) -> ListSIPDispatchRuleResponse: return await self._client.request( SVC, "ListSIPDispatchRule", list, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.ListSIPDispatchRuleResponse, + ListSIPDispatchRuleResponse, ) async def delete_sip_dispatch_rule( - self, delete: proto_sip.DeleteSIPDispatchRuleRequest - ) -> proto_sip.SIPDispatchRuleInfo: + self, delete: DeleteSIPDispatchRuleRequest + ) -> SIPDispatchRuleInfo: return await self._client.request( SVC, "DeleteSIPDispatchRule", delete, self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)), - proto_sip.SIPDispatchRuleInfo, + SIPDispatchRuleInfo, ) async def create_sip_participant( - self, create: proto_sip.CreateSIPParticipantRequest - ) -> proto_sip.SIPParticipantInfo: + self, create: CreateSIPParticipantRequest + ) -> SIPParticipantInfo: return await self._client.request( SVC, "CreateSIPParticipant", create, self._auth_header(VideoGrants(), sip=SIPGrants(call=True)), - proto_sip.SIPParticipantInfo, + SIPParticipantInfo, ) async def transfer_sip_participant( - self, transfer: proto_sip.TransferSIPParticipantRequest - ) -> proto_sip.SIPParticipantInfo: + self, transfer: TransferSIPParticipantRequest + ) -> SIPParticipantInfo: return await self._client.request( SVC, "TransferSIPParticipant", @@ -147,5 +157,5 @@ async def transfer_sip_participant( ), sip=SIPGrants(call=True), ), - proto_sip.SIPParticipantInfo, + SIPParticipantInfo, ) diff --git a/livekit-api/livekit/api/webhook.py b/livekit-api/livekit/api/webhook.py index 5dedf048..9f500637 100644 --- a/livekit-api/livekit/api/webhook.py +++ b/livekit-api/livekit/api/webhook.py @@ -1,5 +1,5 @@ from .access_token import TokenVerifier -from livekit.protocol import webhook as proto_webhook +from livekit.protocol.webhook import WebhookEvent from google.protobuf.json_format import Parse import hashlib import base64 @@ -9,7 +9,7 @@ class WebhookReceiver: def __init__(self, token_verifier: TokenVerifier): self._verifier = token_verifier - def receive(self, body: str, auth_token: str) -> proto_webhook.WebhookEvent: + def receive(self, body: str, auth_token: str) -> WebhookEvent: claims = self._verifier.verify(auth_token) if claims.sha256 is None: raise Exception("sha256 was not found in the token") @@ -20,4 +20,4 @@ def receive(self, body: str, auth_token: str) -> proto_webhook.WebhookEvent: if body_hash != claims_hash: raise Exception("hash mismatch") - return Parse(body, proto_webhook.WebhookEvent(), ignore_unknown_fields=True) + return Parse(body, WebhookEvent(), ignore_unknown_fields=True) From ec3eab44878b25d316e33358f5e43bdfdc1b68b5 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:10:42 -0800 Subject: [PATCH 03/11] gi --- .gitignore | 4 +- docs/index.html | 7 - docs/livekit/api.html | 2252 ------------------ docs/livekit/api/_service.html | 390 --- docs/livekit/api/access_token.html | 1942 --------------- docs/livekit/api/agent_dispatch_service.html | 743 ------ docs/livekit/api/egress_service.html | 810 ------- docs/livekit/api/ingress_service.html | 550 ----- docs/livekit/api/livekit_api.html | 665 ------ docs/livekit/api/room_service.html | 882 ------- docs/livekit/api/sip_service.html | 978 -------- docs/livekit/api/twirp_client.html | 952 -------- docs/livekit/api/version.html | 242 -- docs/livekit/api/webhook.html | 393 --- docs/search.js | 46 - 15 files changed, 3 insertions(+), 10853 deletions(-) delete mode 100644 docs/index.html delete mode 100644 docs/livekit/api.html delete mode 100644 docs/livekit/api/_service.html delete mode 100644 docs/livekit/api/access_token.html delete mode 100644 docs/livekit/api/agent_dispatch_service.html delete mode 100644 docs/livekit/api/egress_service.html delete mode 100644 docs/livekit/api/ingress_service.html delete mode 100644 docs/livekit/api/livekit_api.html delete mode 100644 docs/livekit/api/room_service.html delete mode 100644 docs/livekit/api/sip_service.html delete mode 100644 docs/livekit/api/twirp_client.html delete mode 100644 docs/livekit/api/version.html delete mode 100644 docs/livekit/api/webhook.html delete mode 100644 docs/search.js diff --git a/.gitignore b/.gitignore index 1756b987..ea0eda1f 100644 --- a/.gitignore +++ b/.gitignore @@ -162,4 +162,6 @@ cython_debug/ # vscode project settings .vscode -.DS_Store \ No newline at end of file +.DS_Store + +docs \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index b3d77804..00000000 --- a/docs/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/livekit/api.html b/docs/livekit/api.html deleted file mode 100644 index aa95c10c..00000000 --- a/docs/livekit/api.html +++ /dev/null @@ -1,2252 +0,0 @@ - - - - - - - livekit.api API documentation - - - - - - - - - -
-
-

-livekit.api

- -

LiveKit Server APIs for Python

- -

Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.

- -

Primary entry point is LiveKitAPI.

- -

See https://docs.livekit.io/reference/server/server-apis for more information.

-
- - - - - -
 1# Copyright 2023 LiveKit, Inc.
- 2#
- 3# Licensed under the Apache License, Version 2.0 (the "License");
- 4# you may not use this file except in compliance with the License.
- 5# You may obtain a copy of the License at
- 6#
- 7#     http://www.apache.org/licenses/LICENSE-2.0
- 8#
- 9# Unless required by applicable law or agreed to in writing, software
-10# distributed under the License is distributed on an "AS IS" BASIS,
-11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-12# See the License for the specific language governing permissions and
-13# limitations under the License.
-14
-15"""LiveKit Server APIs for Python
-16
-17Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.
-18
-19Primary entry point is `LiveKitAPI`.
-20
-21See https://docs.livekit.io/reference/server/server-apis for more information.
-22"""
-23
-24# flake8: noqa
-25# re-export packages from protocol
-26from livekit.protocol.agent_dispatch import *
-27from livekit.protocol.agent import *
-28from livekit.protocol.egress import *
-29from livekit.protocol.ingress import *
-30from livekit.protocol.models import *
-31from livekit.protocol.room import *
-32from livekit.protocol.webhook import *
-33from livekit.protocol.sip import *
-34
-35from .twirp_client import TwirpError, TwirpErrorCode
-36from .livekit_api import LiveKitAPI
-37from .access_token import VideoGrants, SIPGrants, AccessToken, TokenVerifier
-38from .webhook import WebhookReceiver
-39from .version import __version__
-40
-41__all__ = [
-42    "LiveKitAPI",
-43    "room_service",
-44    "egress_service",
-45    "ingress_service",
-46    "sip_service",
-47    "agent_dispatch_service",
-48    "VideoGrants",
-49    "SIPGrants",
-50    "AccessToken",
-51    "TokenVerifier",
-52    "WebhookReceiver",
-53    "TwirpError",
-54    "TwirpErrorCode",
-55]
-
- - -
-
- -
- - class - LiveKitAPI: - - - -
- -
12class LiveKitAPI:
-13    """LiveKit Server API Client
-14    
-15    This class is the main entrypoint, which exposes all services.
-16
-17    Usage:
-18
-19    ```python
-20    from livekit import api
-21    lkapi = api.LiveKitAPI()
-22    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
-23    ```
-24    """
-25
-26    def __init__(
-27        self,
-28        url: Optional[str] = None,
-29        api_key: Optional[str] = None,
-30        api_secret: Optional[str] = None,
-31        *,
-32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
-33    ):
-34        """Create a new LiveKitAPI instance.
-35        
-36        Args:
-37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
-38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
-39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
-40            timeout: Request timeout (default: 60 seconds)
-41        """
-42        url = url or os.getenv("LIVEKIT_URL")
-43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-45
-46        if not url:
-47            raise ValueError("url must be set")
-48
-49        if not api_key or not api_secret:
-50            raise ValueError("api_key and api_secret must be set")
-51
-52        self._session = aiohttp.ClientSession(timeout=timeout)
-53        self._room = RoomService(self._session, url, api_key, api_secret)
-54        self._ingress = IngressService(self._session, url, api_key, api_secret)
-55        self._egress = EgressService(self._session, url, api_key, api_secret)
-56        self._sip = SipService(self._session, url, api_key, api_secret)
-57        self._agent_dispatch = AgentDispatchService(
-58            self._session, url, api_key, api_secret
-59        )
-60
-61    @property
-62    def agent_dispatch(self) -> AgentDispatchService:
-63        """Instance of the AgentDispatchService
-64        
-65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
-66        return self._agent_dispatch
-67
-68    @property
-69    def room(self) -> RoomService:
-70        """Instance of the RoomService
-71        
-72        See `livekit.api.room_service.RoomService`"""
-73        return self._room
-74
-75    @property
-76    def ingress(self) -> IngressService:
-77        """Instance of the IngressService
-78        
-79        See `livekit.api.ingress_service.IngressService`"""
-80        return self._ingress
-81
-82    @property
-83    def egress(self) -> EgressService:
-84        """Instance of the EgressService
-85        
-86        See `livekit.api.egress_service.EgressService`"""
-87        return self._egress
-88
-89    @property
-90    def sip(self) -> SipService:
-91        """Instance of the SipService
-92        
-93        See `livekit.api.sip_service.SipService`"""
-94        return self._sip
-95
-96    async def aclose(self):
-97        """@private"""
-98        await self._session.close()
-
- - -

LiveKit Server API Client

- -

This class is the main entrypoint, which exposes all services.

- -

Usage:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
-
-
-
- - -
- -
- - LiveKitAPI( url: Optional[str] = None, api_key: Optional[str] = None, api_secret: Optional[str] = None, *, timeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5)) - - - -
- -
26    def __init__(
-27        self,
-28        url: Optional[str] = None,
-29        api_key: Optional[str] = None,
-30        api_secret: Optional[str] = None,
-31        *,
-32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
-33    ):
-34        """Create a new LiveKitAPI instance.
-35        
-36        Args:
-37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
-38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
-39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
-40            timeout: Request timeout (default: 60 seconds)
-41        """
-42        url = url or os.getenv("LIVEKIT_URL")
-43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-45
-46        if not url:
-47            raise ValueError("url must be set")
-48
-49        if not api_key or not api_secret:
-50            raise ValueError("api_key and api_secret must be set")
-51
-52        self._session = aiohttp.ClientSession(timeout=timeout)
-53        self._room = RoomService(self._session, url, api_key, api_secret)
-54        self._ingress = IngressService(self._session, url, api_key, api_secret)
-55        self._egress = EgressService(self._session, url, api_key, api_secret)
-56        self._sip = SipService(self._session, url, api_key, api_secret)
-57        self._agent_dispatch = AgentDispatchService(
-58            self._session, url, api_key, api_secret
-59        )
-
- - -

Create a new LiveKitAPI instance.

- -
Arguments:
- -
    -
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • -
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • -
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • -
  • timeout: Request timeout (default: 60 seconds)
  • -
-
- - -
-
- -
- agent_dispatch: livekit.api.agent_dispatch_service.AgentDispatchService - - - -
- -
61    @property
-62    def agent_dispatch(self) -> AgentDispatchService:
-63        """Instance of the AgentDispatchService
-64        
-65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
-66        return self._agent_dispatch
-
- - -

Instance of the AgentDispatchService

- -

See livekit.api.agent_dispatch_service.AgentDispatchService

-
- - -
-
- -
- room: livekit.api.room_service.RoomService - - - -
- -
68    @property
-69    def room(self) -> RoomService:
-70        """Instance of the RoomService
-71        
-72        See `livekit.api.room_service.RoomService`"""
-73        return self._room
-
- - -

Instance of the RoomService

- -

See livekit.api.room_service.RoomService

-
- - -
-
- -
- ingress: livekit.api.ingress_service.IngressService - - - -
- -
75    @property
-76    def ingress(self) -> IngressService:
-77        """Instance of the IngressService
-78        
-79        See `livekit.api.ingress_service.IngressService`"""
-80        return self._ingress
-
- - -

Instance of the IngressService

- -

See livekit.api.ingress_service.IngressService

-
- - -
-
- -
- egress: livekit.api.egress_service.EgressService - - - -
- -
82    @property
-83    def egress(self) -> EgressService:
-84        """Instance of the EgressService
-85        
-86        See `livekit.api.egress_service.EgressService`"""
-87        return self._egress
-
- - -

Instance of the EgressService

- -

See livekit.api.egress_service.EgressService

-
- - -
-
- -
- sip: livekit.api.sip_service.SipService - - - -
- -
89    @property
-90    def sip(self) -> SipService:
-91        """Instance of the SipService
-92        
-93        See `livekit.api.sip_service.SipService`"""
-94        return self._sip
-
- - -

Instance of the SipService

- -

See livekit.api.sip_service.SipService

-
- - -
-
-
- -
-
@dataclasses.dataclass
- - class - VideoGrants: - - - -
- -
31@dataclasses.dataclass
-32class VideoGrants:
-33    # actions on rooms
-34    room_create: Optional[bool] = None
-35    room_list: Optional[bool] = None
-36    room_record: Optional[bool] = None
-37
-38    # actions on a particular room
-39    room_admin: Optional[bool] = None
-40    room_join: Optional[bool] = None
-41    room: str = ""
-42
-43    # permissions within a room
-44    can_publish: bool = True
-45    can_subscribe: bool = True
-46    can_publish_data: bool = True
-47
-48    # TrackSource types that a participant may publish.
-49    # When set, it supersedes CanPublish. Only sources explicitly set here can be
-50    # published
-51    can_publish_sources: Optional[List[str]] = None
-52
-53    # by default, a participant is not allowed to update its own metadata
-54    can_update_own_metadata: Optional[bool] = None
-55
-56    # actions on ingresses
-57    ingress_admin: Optional[bool] = None  # applies to all ingress
-58
-59    # participant is not visible to other participants (useful when making bots)
-60    hidden: Optional[bool] = None
-61
-62    # [deprecated] indicates to the room that current participant is a recorder
-63    recorder: Optional[bool] = None
-64
-65    # indicates that the holder can register as an Agent framework worker
-66    agent: Optional[bool] = None
-
- - - - -
-
- - VideoGrants( room_create: Optional[bool] = None, room_list: Optional[bool] = None, room_record: Optional[bool] = None, room_admin: Optional[bool] = None, room_join: Optional[bool] = None, room: str = '', can_publish: bool = True, can_subscribe: bool = True, can_publish_data: bool = True, can_publish_sources: Optional[List[str]] = None, can_update_own_metadata: Optional[bool] = None, ingress_admin: Optional[bool] = None, hidden: Optional[bool] = None, recorder: Optional[bool] = None, agent: Optional[bool] = None) - - -
- - - - -
-
-
- room_create: Optional[bool] = -None - - -
- - - - -
-
-
- room_list: Optional[bool] = -None - - -
- - - - -
-
-
- room_record: Optional[bool] = -None - - -
- - - - -
-
-
- room_admin: Optional[bool] = -None - - -
- - - - -
-
-
- room_join: Optional[bool] = -None - - -
- - - - -
-
-
- room: str = -'' - - -
- - - - -
-
-
- can_publish: bool = -True - - -
- - - - -
-
-
- can_subscribe: bool = -True - - -
- - - - -
-
-
- can_publish_data: bool = -True - - -
- - - - -
-
-
- can_publish_sources: Optional[List[str]] = -None - - -
- - - - -
-
-
- can_update_own_metadata: Optional[bool] = -None - - -
- - - - -
-
-
- ingress_admin: Optional[bool] = -None - - -
- - - - -
-
-
- hidden: Optional[bool] = -None - - -
- - - - -
-
-
- recorder: Optional[bool] = -None - - -
- - - - -
-
-
- agent: Optional[bool] = -None - - -
- - - - -
-
-
- -
-
@dataclasses.dataclass
- - class - SIPGrants: - - - -
- -
69@dataclasses.dataclass
-70class SIPGrants:
-71    # manage sip resources
-72    admin: bool = False
-73    # make outbound calls
-74    call: bool = False
-
- - - - -
-
- - SIPGrants(admin: bool = False, call: bool = False) - - -
- - - - -
-
-
- admin: bool = -False - - -
- - - - -
-
-
- call: bool = -False - - -
- - - - -
-
-
- -
- - class - AccessToken: - - - -
- -
105class AccessToken:
-106    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
-107
-108    def __init__(
-109        self,
-110        api_key: Optional[str] = None,
-111        api_secret: Optional[str] = None,
-112    ) -> None:
-113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-115
-116        if not api_key or not api_secret:
-117            raise ValueError("api_key and api_secret must be set")
-118
-119        self.api_key = api_key  # iss
-120        self.api_secret = api_secret
-121        self.claims = Claims()
-122
-123        # default jwt claims
-124        self.identity = ""  # sub
-125        self.ttl = DEFAULT_TTL  # exp
-126
-127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
-128        self.ttl = ttl
-129        return self
-130
-131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
-132        self.claims.video = grants
-133        return self
-134
-135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
-136        self.claims.sip = grants
-137        return self
-138
-139    def with_identity(self, identity: str) -> "AccessToken":
-140        self.identity = identity
-141        return self
-142
-143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
-144        self.claims.kind = kind
-145        return self
-146
-147    def with_name(self, name: str) -> "AccessToken":
-148        self.claims.name = name
-149        return self
-150
-151    def with_metadata(self, metadata: str) -> "AccessToken":
-152        self.claims.metadata = metadata
-153        return self
-154
-155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
-156        self.claims.attributes = attributes
-157        return self
-158
-159    def with_sha256(self, sha256: str) -> "AccessToken":
-160        self.claims.sha256 = sha256
-161        return self
-162
-163    def with_room_preset(self, preset: str) -> "AccessToken":
-164        self.claims.room_preset = preset
-165        return self
-166
-167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
-168        self.claims.room_config = config
-169        return self
-170
-171    def to_jwt(self) -> str:
-172        video = self.claims.video
-173        if video and video.room_join and (not self.identity or not video.room):
-174            raise ValueError("identity and room must be set when joining a room")
-175
-176        # we want to exclude None values from the token
-177        jwt_claims = self.claims.asdict()
-178        jwt_claims.update(
-179            {
-180                "sub": self.identity,
-181                "iss": self.api_key,
-182                "nbf": calendar.timegm(
-183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
-184                ),
-185                "exp": calendar.timegm(
-186                    (
-187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
-188                    ).utctimetuple()
-189                ),
-190            }
-191        )
-192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
-
- - - - -
- -
- - AccessToken(api_key: Optional[str] = None, api_secret: Optional[str] = None) - - - -
- -
108    def __init__(
-109        self,
-110        api_key: Optional[str] = None,
-111        api_secret: Optional[str] = None,
-112    ) -> None:
-113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-115
-116        if not api_key or not api_secret:
-117            raise ValueError("api_key and api_secret must be set")
-118
-119        self.api_key = api_key  # iss
-120        self.api_secret = api_secret
-121        self.claims = Claims()
-122
-123        # default jwt claims
-124        self.identity = ""  # sub
-125        self.ttl = DEFAULT_TTL  # exp
-
- - - - -
-
-
- ParticipantKind = -typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent'] - - -
- - - - -
-
-
- api_key - - -
- - - - -
-
-
- api_secret - - -
- - - - -
-
-
- claims - - -
- - - - -
-
-
- identity - - -
- - - - -
-
-
- ttl - - -
- - - - -
-
- -
- - def - with_ttl(self, ttl: datetime.timedelta) -> AccessToken: - - - -
- -
127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
-128        self.ttl = ttl
-129        return self
-
- - - - -
-
- -
- - def - with_grants( self, grants: VideoGrants) -> AccessToken: - - - -
- -
131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
-132        self.claims.video = grants
-133        return self
-
- - - - -
-
- -
- - def - with_sip_grants( self, grants: SIPGrants) -> AccessToken: - - - -
- -
135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
-136        self.claims.sip = grants
-137        return self
-
- - - - -
-
- -
- - def - with_identity(self, identity: str) -> AccessToken: - - - -
- -
139    def with_identity(self, identity: str) -> "AccessToken":
-140        self.identity = identity
-141        return self
-
- - - - -
-
- -
- - def - with_kind( self, kind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> AccessToken: - - - -
- -
143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
-144        self.claims.kind = kind
-145        return self
-
- - - - -
-
- -
- - def - with_name(self, name: str) -> AccessToken: - - - -
- -
147    def with_name(self, name: str) -> "AccessToken":
-148        self.claims.name = name
-149        return self
-
- - - - -
-
- -
- - def - with_metadata(self, metadata: str) -> AccessToken: - - - -
- -
151    def with_metadata(self, metadata: str) -> "AccessToken":
-152        self.claims.metadata = metadata
-153        return self
-
- - - - -
-
- -
- - def - with_attributes(self, attributes: dict[str, str]) -> AccessToken: - - - -
- -
155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
-156        self.claims.attributes = attributes
-157        return self
-
- - - - -
-
- -
- - def - with_sha256(self, sha256: str) -> AccessToken: - - - -
- -
159    def with_sha256(self, sha256: str) -> "AccessToken":
-160        self.claims.sha256 = sha256
-161        return self
-
- - - - -
-
- -
- - def - with_room_preset(self, preset: str) -> AccessToken: - - - -
- -
163    def with_room_preset(self, preset: str) -> "AccessToken":
-164        self.claims.room_preset = preset
-165        return self
-
- - - - -
-
- -
- - def - with_room_config( self, config: room.RoomConfiguration) -> AccessToken: - - - -
- -
167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
-168        self.claims.room_config = config
-169        return self
-
- - - - -
-
- -
- - def - to_jwt(self) -> str: - - - -
- -
171    def to_jwt(self) -> str:
-172        video = self.claims.video
-173        if video and video.room_join and (not self.identity or not video.room):
-174            raise ValueError("identity and room must be set when joining a room")
-175
-176        # we want to exclude None values from the token
-177        jwt_claims = self.claims.asdict()
-178        jwt_claims.update(
-179            {
-180                "sub": self.identity,
-181                "iss": self.api_key,
-182                "nbf": calendar.timegm(
-183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
-184                ),
-185                "exp": calendar.timegm(
-186                    (
-187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
-188                    ).utctimetuple()
-189                ),
-190            }
-191        )
-192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
-
- - - - -
-
-
- -
- - class - TokenVerifier: - - - -
- -
195class TokenVerifier:
-196    def __init__(
-197        self,
-198        api_key: Optional[str] = None,
-199        api_secret: Optional[str] = None,
-200        *,
-201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
-202    ) -> None:
-203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-205
-206        if not api_key or not api_secret:
-207            raise ValueError("api_key and api_secret must be set")
-208
-209        self.api_key = api_key
-210        self.api_secret = api_secret
-211        self._leeway = leeway
-212
-213    def verify(self, token: str) -> Claims:
-214        claims = jwt.decode(
-215            token,
-216            self.api_secret,
-217            issuer=self.api_key,
-218            algorithms=["HS256"],
-219            leeway=self._leeway.total_seconds(),
-220        )
-221
-222        video_dict = claims.get("video", dict())
-223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
-224        video_dict = {
-225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
-226        }
-227        video = VideoGrants(**video_dict)
-228
-229        sip_dict = claims.get("sip", dict())
-230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
-231        sip_dict = {
-232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
-233        }
-234        sip = SIPGrants(**sip_dict)
-235
-236        grant_claims = Claims(
-237            identity=claims.get("sub", ""),
-238            name=claims.get("name", ""),
-239            video=video,
-240            sip=sip,
-241            attributes=claims.get("attributes", {}),
-242            metadata=claims.get("metadata", ""),
-243            sha256=claims.get("sha256", ""),
-244        )
-245
-246        if claims.get("roomPreset"):
-247            grant_claims.room_preset = claims.get("roomPreset")
-248        if claims.get("roomConfig"):
-249            grant_claims.room_config = ParseDict(
-250                claims.get("roomConfig"),
-251                RoomConfiguration(),
-252                ignore_unknown_fields=True,
-253            )
-254
-255        return grant_claims
-
- - - - -
- -
- - TokenVerifier( api_key: Optional[str] = None, api_secret: Optional[str] = None, *, leeway: datetime.timedelta = datetime.timedelta(seconds=60)) - - - -
- -
196    def __init__(
-197        self,
-198        api_key: Optional[str] = None,
-199        api_secret: Optional[str] = None,
-200        *,
-201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
-202    ) -> None:
-203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-205
-206        if not api_key or not api_secret:
-207            raise ValueError("api_key and api_secret must be set")
-208
-209        self.api_key = api_key
-210        self.api_secret = api_secret
-211        self._leeway = leeway
-
- - - - -
-
-
- api_key - - -
- - - - -
-
-
- api_secret - - -
- - - - -
-
- -
- - def - verify(self, token: str) -> livekit.api.access_token.Claims: - - - -
- -
213    def verify(self, token: str) -> Claims:
-214        claims = jwt.decode(
-215            token,
-216            self.api_secret,
-217            issuer=self.api_key,
-218            algorithms=["HS256"],
-219            leeway=self._leeway.total_seconds(),
-220        )
-221
-222        video_dict = claims.get("video", dict())
-223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
-224        video_dict = {
-225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
-226        }
-227        video = VideoGrants(**video_dict)
-228
-229        sip_dict = claims.get("sip", dict())
-230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
-231        sip_dict = {
-232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
-233        }
-234        sip = SIPGrants(**sip_dict)
-235
-236        grant_claims = Claims(
-237            identity=claims.get("sub", ""),
-238            name=claims.get("name", ""),
-239            video=video,
-240            sip=sip,
-241            attributes=claims.get("attributes", {}),
-242            metadata=claims.get("metadata", ""),
-243            sha256=claims.get("sha256", ""),
-244        )
-245
-246        if claims.get("roomPreset"):
-247            grant_claims.room_preset = claims.get("roomPreset")
-248        if claims.get("roomConfig"):
-249            grant_claims.room_config = ParseDict(
-250                claims.get("roomConfig"),
-251                RoomConfiguration(),
-252                ignore_unknown_fields=True,
-253            )
-254
-255        return grant_claims
-
- - - - -
-
-
- -
- - class - WebhookReceiver: - - - -
- -
 9class WebhookReceiver:
-10    def __init__(self, token_verifier: TokenVerifier):
-11        self._verifier = token_verifier
-12
-13    def receive(self, body: str, auth_token: str) -> WebhookEvent:
-14        claims = self._verifier.verify(auth_token)
-15        if claims.sha256 is None:
-16            raise Exception("sha256 was not found in the token")
-17
-18        body_hash = hashlib.sha256(body.encode()).digest()
-19        claims_hash = base64.b64decode(claims.sha256)
-20
-21        if body_hash != claims_hash:
-22            raise Exception("hash mismatch")
-23
-24        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
-
- - - - -
- -
- - WebhookReceiver(token_verifier: TokenVerifier) - - - -
- -
10    def __init__(self, token_verifier: TokenVerifier):
-11        self._verifier = token_verifier
-
- - - - -
-
- -
- - def - receive(self, body: str, auth_token: str) -> webhook.WebhookEvent: - - - -
- -
13    def receive(self, body: str, auth_token: str) -> WebhookEvent:
-14        claims = self._verifier.verify(auth_token)
-15        if claims.sha256 is None:
-16            raise Exception("sha256 was not found in the token")
-17
-18        body_hash = hashlib.sha256(body.encode()).digest()
-19        claims_hash = base64.b64decode(claims.sha256)
-20
-21        if body_hash != claims_hash:
-22            raise Exception("hash mismatch")
-23
-24        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
-
- - - - -
-
-
- -
- - class - TwirpError(builtins.Exception): - - - -
- -
25class TwirpError(Exception):
-26    def __init__(self, code: str, msg: str) -> None:
-27        self._code = code
-28        self._msg = msg
-29
-30    @property
-31    def code(self) -> str:
-32        return self._code
-33
-34    @property
-35    def message(self) -> str:
-36        return self._msg
-
- - -

Common base class for all non-exit exceptions.

-
- - -
- -
- - TwirpError(code: str, msg: str) - - - -
- -
26    def __init__(self, code: str, msg: str) -> None:
-27        self._code = code
-28        self._msg = msg
-
- - - - -
-
- -
- code: str - - - -
- -
30    @property
-31    def code(self) -> str:
-32        return self._code
-
- - - - -
-
- -
- message: str - - - -
- -
34    @property
-35    def message(self) -> str:
-36        return self._msg
-
- - - - -
-
-
- -
- - class - TwirpErrorCode: - - - -
- -
39class TwirpErrorCode:
-40    CANCELED = "canceled"
-41    UNKNOWN = "unknown"
-42    INVALID_ARGUMENT = "invalid_argument"
-43    MALFORMED = "malformed"
-44    DEADLINE_EXCEEDED = "deadline_exceeded"
-45    NOT_FOUND = "not_found"
-46    BAD_ROUTE = "bad_route"
-47    ALREADY_EXISTS = "already_exists"
-48    PERMISSION_DENIED = "permission_denied"
-49    UNAUTHENTICATED = "unauthenticated"
-50    RESOURCE_EXHAUSTED = "resource_exhausted"
-51    FAILED_PRECONDITION = "failed_precondition"
-52    ABORTED = "aborted"
-53    OUT_OF_RANGE = "out_of_range"
-54    UNIMPLEMENTED = "unimplemented"
-55    INTERNAL = "internal"
-56    UNAVAILABLE = "unavailable"
-57    DATA_LOSS = "dataloss"
-
- - - - -
-
- CANCELED = -'canceled' - - -
- - - - -
-
-
- UNKNOWN = -'unknown' - - -
- - - - -
-
-
- INVALID_ARGUMENT = -'invalid_argument' - - -
- - - - -
-
-
- MALFORMED = -'malformed' - - -
- - - - -
-
-
- DEADLINE_EXCEEDED = -'deadline_exceeded' - - -
- - - - -
-
-
- NOT_FOUND = -'not_found' - - -
- - - - -
-
-
- BAD_ROUTE = -'bad_route' - - -
- - - - -
-
-
- ALREADY_EXISTS = -'already_exists' - - -
- - - - -
-
-
- PERMISSION_DENIED = -'permission_denied' - - -
- - - - -
-
-
- UNAUTHENTICATED = -'unauthenticated' - - -
- - - - -
-
-
- RESOURCE_EXHAUSTED = -'resource_exhausted' - - -
- - - - -
-
-
- FAILED_PRECONDITION = -'failed_precondition' - - -
- - - - -
-
-
- ABORTED = -'aborted' - - -
- - - - -
-
-
- OUT_OF_RANGE = -'out_of_range' - - -
- - - - -
-
-
- UNIMPLEMENTED = -'unimplemented' - - -
- - - - -
-
-
- INTERNAL = -'internal' - - -
- - - - -
-
-
- UNAVAILABLE = -'unavailable' - - -
- - - - -
-
-
- DATA_LOSS = -'dataloss' - - -
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/_service.html b/docs/livekit/api/_service.html deleted file mode 100644 index 2e377cfa..00000000 --- a/docs/livekit/api/_service.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - livekit.api._service API documentation - - - - - - - - - -
-
-

-livekit.api._service

- - - - - - -
 1from __future__ import annotations
- 2
- 3from typing import Dict
- 4import aiohttp
- 5from abc import ABC
- 6from .twirp_client import TwirpClient
- 7from .access_token import AccessToken, VideoGrants, SIPGrants
- 8
- 9AUTHORIZATION = "authorization"
-10
-11
-12class Service(ABC):
-13    def __init__(
-14        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
-15    ):
-16        self._client = TwirpClient(session, host, "livekit")
-17        self.api_key = api_key
-18        self.api_secret = api_secret
-19
-20    def _auth_header(
-21        self, grants: VideoGrants | None, sip: SIPGrants | None = None
-22    ) -> Dict[str, str]:
-23        tok = AccessToken(self.api_key, self.api_secret)
-24        if grants:
-25            tok.with_grants(grants)
-26        if sip is not None:
-27            tok.with_sip_grants(sip)
-28
-29        token = tok.to_jwt()
-30
-31        headers = {}
-32        headers[AUTHORIZATION] = "Bearer {}".format(token)
-33        return headers
-
- - -
-
-
- AUTHORIZATION = -'authorization' - - -
- - - - -
-
- -
- - class - Service(abc.ABC): - - - -
- -
13class Service(ABC):
-14    def __init__(
-15        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
-16    ):
-17        self._client = TwirpClient(session, host, "livekit")
-18        self.api_key = api_key
-19        self.api_secret = api_secret
-20
-21    def _auth_header(
-22        self, grants: VideoGrants | None, sip: SIPGrants | None = None
-23    ) -> Dict[str, str]:
-24        tok = AccessToken(self.api_key, self.api_secret)
-25        if grants:
-26            tok.with_grants(grants)
-27        if sip is not None:
-28            tok.with_sip_grants(sip)
-29
-30        token = tok.to_jwt()
-31
-32        headers = {}
-33        headers[AUTHORIZATION] = "Bearer {}".format(token)
-34        return headers
-
- - -

Helper class that provides a standard way to create an ABC using -inheritance.

-
- - -
- -
- - Service( session: aiohttp.client.ClientSession, host: str, api_key: str, api_secret: str) - - - -
- -
14    def __init__(
-15        self, session: aiohttp.ClientSession, host: str, api_key: str, api_secret: str
-16    ):
-17        self._client = TwirpClient(session, host, "livekit")
-18        self.api_key = api_key
-19        self.api_secret = api_secret
-
- - - - -
-
-
- api_key - - -
- - - - -
-
-
- api_secret - - -
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/access_token.html b/docs/livekit/api/access_token.html deleted file mode 100644 index fbb13d90..00000000 --- a/docs/livekit/api/access_token.html +++ /dev/null @@ -1,1942 +0,0 @@ - - - - - - - livekit.api.access_token API documentation - - - - - - - - - -
-
-

-livekit.api.access_token

- - - - - - -
  1# Copyright 2023 LiveKit, Inc.
-  2#
-  3# Licensed under the Apache License, Version 2.0 (the "License");
-  4# you may not use this file except in compliance with the License.
-  5# You may obtain a copy of the License at
-  6#
-  7#     http://www.apache.org/licenses/LICENSE-2.0
-  8#
-  9# Unless required by applicable law or agreed to in writing, software
- 10# distributed under the License is distributed on an "AS IS" BASIS,
- 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- 12# See the License for the specific language governing permissions and
- 13# limitations under the License.
- 14
- 15import calendar
- 16import dataclasses
- 17import re
- 18import datetime
- 19import os
- 20import jwt
- 21from typing import Optional, List, Literal
- 22from google.protobuf.json_format import MessageToDict, ParseDict
- 23
- 24from livekit.protocol.room import RoomConfiguration
- 25
- 26DEFAULT_TTL = datetime.timedelta(hours=6)
- 27DEFAULT_LEEWAY = datetime.timedelta(minutes=1)
- 28
- 29
- 30@dataclasses.dataclass
- 31class VideoGrants:
- 32    # actions on rooms
- 33    room_create: Optional[bool] = None
- 34    room_list: Optional[bool] = None
- 35    room_record: Optional[bool] = None
- 36
- 37    # actions on a particular room
- 38    room_admin: Optional[bool] = None
- 39    room_join: Optional[bool] = None
- 40    room: str = ""
- 41
- 42    # permissions within a room
- 43    can_publish: bool = True
- 44    can_subscribe: bool = True
- 45    can_publish_data: bool = True
- 46
- 47    # TrackSource types that a participant may publish.
- 48    # When set, it supersedes CanPublish. Only sources explicitly set here can be
- 49    # published
- 50    can_publish_sources: Optional[List[str]] = None
- 51
- 52    # by default, a participant is not allowed to update its own metadata
- 53    can_update_own_metadata: Optional[bool] = None
- 54
- 55    # actions on ingresses
- 56    ingress_admin: Optional[bool] = None  # applies to all ingress
- 57
- 58    # participant is not visible to other participants (useful when making bots)
- 59    hidden: Optional[bool] = None
- 60
- 61    # [deprecated] indicates to the room that current participant is a recorder
- 62    recorder: Optional[bool] = None
- 63
- 64    # indicates that the holder can register as an Agent framework worker
- 65    agent: Optional[bool] = None
- 66
- 67
- 68@dataclasses.dataclass
- 69class SIPGrants:
- 70    # manage sip resources
- 71    admin: bool = False
- 72    # make outbound calls
- 73    call: bool = False
- 74
- 75
- 76@dataclasses.dataclass
- 77class Claims:
- 78    identity: str = ""
- 79    name: str = ""
- 80    kind: str = ""
- 81    metadata: str = ""
- 82    video: Optional[VideoGrants] = None
- 83    sip: Optional[SIPGrants] = None
- 84    attributes: Optional[dict[str, str]] = None
- 85    sha256: Optional[str] = None
- 86    room_preset: Optional[str] = None
- 87    room_config: Optional[RoomConfiguration] = None
- 88
- 89    def asdict(self) -> dict:
- 90        # in order to produce minimal JWT size, exclude None or empty values
- 91        claims = dataclasses.asdict(
- 92            self,
- 93            dict_factory=lambda items: {
- 94                snake_to_lower_camel(k): v
- 95                for k, v in items
- 96                if v is not None and v != ""
- 97            },
- 98        )
- 99        if self.room_config:
-100            claims["roomConfig"] = MessageToDict(self.room_config)
-101        return claims
-102
-103
-104class AccessToken:
-105    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
-106
-107    def __init__(
-108        self,
-109        api_key: Optional[str] = None,
-110        api_secret: Optional[str] = None,
-111    ) -> None:
-112        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-113        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-114
-115        if not api_key or not api_secret:
-116            raise ValueError("api_key and api_secret must be set")
-117
-118        self.api_key = api_key  # iss
-119        self.api_secret = api_secret
-120        self.claims = Claims()
-121
-122        # default jwt claims
-123        self.identity = ""  # sub
-124        self.ttl = DEFAULT_TTL  # exp
-125
-126    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
-127        self.ttl = ttl
-128        return self
-129
-130    def with_grants(self, grants: VideoGrants) -> "AccessToken":
-131        self.claims.video = grants
-132        return self
-133
-134    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
-135        self.claims.sip = grants
-136        return self
-137
-138    def with_identity(self, identity: str) -> "AccessToken":
-139        self.identity = identity
-140        return self
-141
-142    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
-143        self.claims.kind = kind
-144        return self
-145
-146    def with_name(self, name: str) -> "AccessToken":
-147        self.claims.name = name
-148        return self
-149
-150    def with_metadata(self, metadata: str) -> "AccessToken":
-151        self.claims.metadata = metadata
-152        return self
-153
-154    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
-155        self.claims.attributes = attributes
-156        return self
-157
-158    def with_sha256(self, sha256: str) -> "AccessToken":
-159        self.claims.sha256 = sha256
-160        return self
-161
-162    def with_room_preset(self, preset: str) -> "AccessToken":
-163        self.claims.room_preset = preset
-164        return self
-165
-166    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
-167        self.claims.room_config = config
-168        return self
-169
-170    def to_jwt(self) -> str:
-171        video = self.claims.video
-172        if video and video.room_join and (not self.identity or not video.room):
-173            raise ValueError("identity and room must be set when joining a room")
-174
-175        # we want to exclude None values from the token
-176        jwt_claims = self.claims.asdict()
-177        jwt_claims.update(
-178            {
-179                "sub": self.identity,
-180                "iss": self.api_key,
-181                "nbf": calendar.timegm(
-182                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
-183                ),
-184                "exp": calendar.timegm(
-185                    (
-186                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
-187                    ).utctimetuple()
-188                ),
-189            }
-190        )
-191        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
-192
-193
-194class TokenVerifier:
-195    def __init__(
-196        self,
-197        api_key: Optional[str] = None,
-198        api_secret: Optional[str] = None,
-199        *,
-200        leeway: datetime.timedelta = DEFAULT_LEEWAY,
-201    ) -> None:
-202        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-203        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-204
-205        if not api_key or not api_secret:
-206            raise ValueError("api_key and api_secret must be set")
-207
-208        self.api_key = api_key
-209        self.api_secret = api_secret
-210        self._leeway = leeway
-211
-212    def verify(self, token: str) -> Claims:
-213        claims = jwt.decode(
-214            token,
-215            self.api_secret,
-216            issuer=self.api_key,
-217            algorithms=["HS256"],
-218            leeway=self._leeway.total_seconds(),
-219        )
-220
-221        video_dict = claims.get("video", dict())
-222        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
-223        video_dict = {
-224            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
-225        }
-226        video = VideoGrants(**video_dict)
-227
-228        sip_dict = claims.get("sip", dict())
-229        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
-230        sip_dict = {
-231            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
-232        }
-233        sip = SIPGrants(**sip_dict)
-234
-235        grant_claims = Claims(
-236            identity=claims.get("sub", ""),
-237            name=claims.get("name", ""),
-238            video=video,
-239            sip=sip,
-240            attributes=claims.get("attributes", {}),
-241            metadata=claims.get("metadata", ""),
-242            sha256=claims.get("sha256", ""),
-243        )
-244
-245        if claims.get("roomPreset"):
-246            grant_claims.room_preset = claims.get("roomPreset")
-247        if claims.get("roomConfig"):
-248            grant_claims.room_config = ParseDict(
-249                claims.get("roomConfig"),
-250                RoomConfiguration(),
-251                ignore_unknown_fields=True,
-252            )
-253
-254        return grant_claims
-255
-256
-257def camel_to_snake(t: str):
-258    return re.sub(r"(?<!^)(?=[A-Z])", "_", t).lower()
-259
-260
-261def snake_to_lower_camel(t: str):
-262    return "".join(
-263        word.capitalize() if i else word for i, word in enumerate(t.split("_"))
-264    )
-
- - -
-
-
- DEFAULT_TTL = -datetime.timedelta(seconds=21600) - - -
- - - - -
-
-
- DEFAULT_LEEWAY = -datetime.timedelta(seconds=60) - - -
- - - - -
-
- -
-
@dataclasses.dataclass
- - class - VideoGrants: - - - -
- -
31@dataclasses.dataclass
-32class VideoGrants:
-33    # actions on rooms
-34    room_create: Optional[bool] = None
-35    room_list: Optional[bool] = None
-36    room_record: Optional[bool] = None
-37
-38    # actions on a particular room
-39    room_admin: Optional[bool] = None
-40    room_join: Optional[bool] = None
-41    room: str = ""
-42
-43    # permissions within a room
-44    can_publish: bool = True
-45    can_subscribe: bool = True
-46    can_publish_data: bool = True
-47
-48    # TrackSource types that a participant may publish.
-49    # When set, it supersedes CanPublish. Only sources explicitly set here can be
-50    # published
-51    can_publish_sources: Optional[List[str]] = None
-52
-53    # by default, a participant is not allowed to update its own metadata
-54    can_update_own_metadata: Optional[bool] = None
-55
-56    # actions on ingresses
-57    ingress_admin: Optional[bool] = None  # applies to all ingress
-58
-59    # participant is not visible to other participants (useful when making bots)
-60    hidden: Optional[bool] = None
-61
-62    # [deprecated] indicates to the room that current participant is a recorder
-63    recorder: Optional[bool] = None
-64
-65    # indicates that the holder can register as an Agent framework worker
-66    agent: Optional[bool] = None
-
- - - - -
-
- - VideoGrants( room_create: Optional[bool] = None, room_list: Optional[bool] = None, room_record: Optional[bool] = None, room_admin: Optional[bool] = None, room_join: Optional[bool] = None, room: str = '', can_publish: bool = True, can_subscribe: bool = True, can_publish_data: bool = True, can_publish_sources: Optional[List[str]] = None, can_update_own_metadata: Optional[bool] = None, ingress_admin: Optional[bool] = None, hidden: Optional[bool] = None, recorder: Optional[bool] = None, agent: Optional[bool] = None) - - -
- - - - -
-
-
- room_create: Optional[bool] = -None - - -
- - - - -
-
-
- room_list: Optional[bool] = -None - - -
- - - - -
-
-
- room_record: Optional[bool] = -None - - -
- - - - -
-
-
- room_admin: Optional[bool] = -None - - -
- - - - -
-
-
- room_join: Optional[bool] = -None - - -
- - - - -
-
-
- room: str = -'' - - -
- - - - -
-
-
- can_publish: bool = -True - - -
- - - - -
-
-
- can_subscribe: bool = -True - - -
- - - - -
-
-
- can_publish_data: bool = -True - - -
- - - - -
-
-
- can_publish_sources: Optional[List[str]] = -None - - -
- - - - -
-
-
- can_update_own_metadata: Optional[bool] = -None - - -
- - - - -
-
-
- ingress_admin: Optional[bool] = -None - - -
- - - - -
-
-
- hidden: Optional[bool] = -None - - -
- - - - -
-
-
- recorder: Optional[bool] = -None - - -
- - - - -
-
-
- agent: Optional[bool] = -None - - -
- - - - -
-
-
- -
-
@dataclasses.dataclass
- - class - SIPGrants: - - - -
- -
69@dataclasses.dataclass
-70class SIPGrants:
-71    # manage sip resources
-72    admin: bool = False
-73    # make outbound calls
-74    call: bool = False
-
- - - - -
-
- - SIPGrants(admin: bool = False, call: bool = False) - - -
- - - - -
-
-
- admin: bool = -False - - -
- - - - -
-
-
- call: bool = -False - - -
- - - - -
-
-
- -
-
@dataclasses.dataclass
- - class - Claims: - - - -
- -
 77@dataclasses.dataclass
- 78class Claims:
- 79    identity: str = ""
- 80    name: str = ""
- 81    kind: str = ""
- 82    metadata: str = ""
- 83    video: Optional[VideoGrants] = None
- 84    sip: Optional[SIPGrants] = None
- 85    attributes: Optional[dict[str, str]] = None
- 86    sha256: Optional[str] = None
- 87    room_preset: Optional[str] = None
- 88    room_config: Optional[RoomConfiguration] = None
- 89
- 90    def asdict(self) -> dict:
- 91        # in order to produce minimal JWT size, exclude None or empty values
- 92        claims = dataclasses.asdict(
- 93            self,
- 94            dict_factory=lambda items: {
- 95                snake_to_lower_camel(k): v
- 96                for k, v in items
- 97                if v is not None and v != ""
- 98            },
- 99        )
-100        if self.room_config:
-101            claims["roomConfig"] = MessageToDict(self.room_config)
-102        return claims
-
- - - - -
-
- - Claims( identity: str = '', name: str = '', kind: str = '', metadata: str = '', video: Optional[VideoGrants] = None, sip: Optional[SIPGrants] = None, attributes: Optional[dict[str, str]] = None, sha256: Optional[str] = None, room_preset: Optional[str] = None, room_config: Optional[room.RoomConfiguration] = None) - - -
- - - - -
-
-
- identity: str = -'' - - -
- - - - -
-
-
- name: str = -'' - - -
- - - - -
-
-
- kind: str = -'' - - -
- - - - -
-
-
- metadata: str = -'' - - -
- - - - -
-
-
- video: Optional[VideoGrants] = -None - - -
- - - - -
-
-
- sip: Optional[SIPGrants] = -None - - -
- - - - -
-
-
- attributes: Optional[dict[str, str]] = -None - - -
- - - - -
-
-
- sha256: Optional[str] = -None - - -
- - - - -
-
-
- room_preset: Optional[str] = -None - - -
- - - - -
-
-
- room_config: Optional[room.RoomConfiguration] = -None - - -
- - - - -
-
- -
- - def - asdict(self) -> dict: - - - -
- -
 90    def asdict(self) -> dict:
- 91        # in order to produce minimal JWT size, exclude None or empty values
- 92        claims = dataclasses.asdict(
- 93            self,
- 94            dict_factory=lambda items: {
- 95                snake_to_lower_camel(k): v
- 96                for k, v in items
- 97                if v is not None and v != ""
- 98            },
- 99        )
-100        if self.room_config:
-101            claims["roomConfig"] = MessageToDict(self.room_config)
-102        return claims
-
- - - - -
-
-
- -
- - class - AccessToken: - - - -
- -
105class AccessToken:
-106    ParticipantKind = Literal["standard", "egress", "ingress", "sip", "agent"]
-107
-108    def __init__(
-109        self,
-110        api_key: Optional[str] = None,
-111        api_secret: Optional[str] = None,
-112    ) -> None:
-113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-115
-116        if not api_key or not api_secret:
-117            raise ValueError("api_key and api_secret must be set")
-118
-119        self.api_key = api_key  # iss
-120        self.api_secret = api_secret
-121        self.claims = Claims()
-122
-123        # default jwt claims
-124        self.identity = ""  # sub
-125        self.ttl = DEFAULT_TTL  # exp
-126
-127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
-128        self.ttl = ttl
-129        return self
-130
-131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
-132        self.claims.video = grants
-133        return self
-134
-135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
-136        self.claims.sip = grants
-137        return self
-138
-139    def with_identity(self, identity: str) -> "AccessToken":
-140        self.identity = identity
-141        return self
-142
-143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
-144        self.claims.kind = kind
-145        return self
-146
-147    def with_name(self, name: str) -> "AccessToken":
-148        self.claims.name = name
-149        return self
-150
-151    def with_metadata(self, metadata: str) -> "AccessToken":
-152        self.claims.metadata = metadata
-153        return self
-154
-155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
-156        self.claims.attributes = attributes
-157        return self
-158
-159    def with_sha256(self, sha256: str) -> "AccessToken":
-160        self.claims.sha256 = sha256
-161        return self
-162
-163    def with_room_preset(self, preset: str) -> "AccessToken":
-164        self.claims.room_preset = preset
-165        return self
-166
-167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
-168        self.claims.room_config = config
-169        return self
-170
-171    def to_jwt(self) -> str:
-172        video = self.claims.video
-173        if video and video.room_join and (not self.identity or not video.room):
-174            raise ValueError("identity and room must be set when joining a room")
-175
-176        # we want to exclude None values from the token
-177        jwt_claims = self.claims.asdict()
-178        jwt_claims.update(
-179            {
-180                "sub": self.identity,
-181                "iss": self.api_key,
-182                "nbf": calendar.timegm(
-183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
-184                ),
-185                "exp": calendar.timegm(
-186                    (
-187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
-188                    ).utctimetuple()
-189                ),
-190            }
-191        )
-192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
-
- - - - -
- -
- - AccessToken(api_key: Optional[str] = None, api_secret: Optional[str] = None) - - - -
- -
108    def __init__(
-109        self,
-110        api_key: Optional[str] = None,
-111        api_secret: Optional[str] = None,
-112    ) -> None:
-113        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-114        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-115
-116        if not api_key or not api_secret:
-117            raise ValueError("api_key and api_secret must be set")
-118
-119        self.api_key = api_key  # iss
-120        self.api_secret = api_secret
-121        self.claims = Claims()
-122
-123        # default jwt claims
-124        self.identity = ""  # sub
-125        self.ttl = DEFAULT_TTL  # exp
-
- - - - -
-
-
- ParticipantKind = -typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent'] - - -
- - - - -
-
-
- api_key - - -
- - - - -
-
-
- api_secret - - -
- - - - -
-
-
- claims - - -
- - - - -
-
-
- identity - - -
- - - - -
-
-
- ttl - - -
- - - - -
-
- -
- - def - with_ttl(self, ttl: datetime.timedelta) -> AccessToken: - - - -
- -
127    def with_ttl(self, ttl: datetime.timedelta) -> "AccessToken":
-128        self.ttl = ttl
-129        return self
-
- - - - -
-
- -
- - def - with_grants( self, grants: VideoGrants) -> AccessToken: - - - -
- -
131    def with_grants(self, grants: VideoGrants) -> "AccessToken":
-132        self.claims.video = grants
-133        return self
-
- - - - -
-
- -
- - def - with_sip_grants( self, grants: SIPGrants) -> AccessToken: - - - -
- -
135    def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
-136        self.claims.sip = grants
-137        return self
-
- - - - -
-
- -
- - def - with_identity(self, identity: str) -> AccessToken: - - - -
- -
139    def with_identity(self, identity: str) -> "AccessToken":
-140        self.identity = identity
-141        return self
-
- - - - -
-
- -
- - def - with_kind( self, kind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> AccessToken: - - - -
- -
143    def with_kind(self, kind: ParticipantKind) -> "AccessToken":
-144        self.claims.kind = kind
-145        return self
-
- - - - -
-
- -
- - def - with_name(self, name: str) -> AccessToken: - - - -
- -
147    def with_name(self, name: str) -> "AccessToken":
-148        self.claims.name = name
-149        return self
-
- - - - -
-
- -
- - def - with_metadata(self, metadata: str) -> AccessToken: - - - -
- -
151    def with_metadata(self, metadata: str) -> "AccessToken":
-152        self.claims.metadata = metadata
-153        return self
-
- - - - -
-
- -
- - def - with_attributes(self, attributes: dict[str, str]) -> AccessToken: - - - -
- -
155    def with_attributes(self, attributes: dict[str, str]) -> "AccessToken":
-156        self.claims.attributes = attributes
-157        return self
-
- - - - -
-
- -
- - def - with_sha256(self, sha256: str) -> AccessToken: - - - -
- -
159    def with_sha256(self, sha256: str) -> "AccessToken":
-160        self.claims.sha256 = sha256
-161        return self
-
- - - - -
-
- -
- - def - with_room_preset(self, preset: str) -> AccessToken: - - - -
- -
163    def with_room_preset(self, preset: str) -> "AccessToken":
-164        self.claims.room_preset = preset
-165        return self
-
- - - - -
-
- -
- - def - with_room_config( self, config: room.RoomConfiguration) -> AccessToken: - - - -
- -
167    def with_room_config(self, config: RoomConfiguration) -> "AccessToken":
-168        self.claims.room_config = config
-169        return self
-
- - - - -
-
- -
- - def - to_jwt(self) -> str: - - - -
- -
171    def to_jwt(self) -> str:
-172        video = self.claims.video
-173        if video and video.room_join and (not self.identity or not video.room):
-174            raise ValueError("identity and room must be set when joining a room")
-175
-176        # we want to exclude None values from the token
-177        jwt_claims = self.claims.asdict()
-178        jwt_claims.update(
-179            {
-180                "sub": self.identity,
-181                "iss": self.api_key,
-182                "nbf": calendar.timegm(
-183                    datetime.datetime.now(datetime.timezone.utc).utctimetuple()
-184                ),
-185                "exp": calendar.timegm(
-186                    (
-187                        datetime.datetime.now(datetime.timezone.utc) + self.ttl
-188                    ).utctimetuple()
-189                ),
-190            }
-191        )
-192        return jwt.encode(jwt_claims, self.api_secret, algorithm="HS256")
-
- - - - -
-
-
- -
- - class - TokenVerifier: - - - -
- -
195class TokenVerifier:
-196    def __init__(
-197        self,
-198        api_key: Optional[str] = None,
-199        api_secret: Optional[str] = None,
-200        *,
-201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
-202    ) -> None:
-203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-205
-206        if not api_key or not api_secret:
-207            raise ValueError("api_key and api_secret must be set")
-208
-209        self.api_key = api_key
-210        self.api_secret = api_secret
-211        self._leeway = leeway
-212
-213    def verify(self, token: str) -> Claims:
-214        claims = jwt.decode(
-215            token,
-216            self.api_secret,
-217            issuer=self.api_key,
-218            algorithms=["HS256"],
-219            leeway=self._leeway.total_seconds(),
-220        )
-221
-222        video_dict = claims.get("video", dict())
-223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
-224        video_dict = {
-225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
-226        }
-227        video = VideoGrants(**video_dict)
-228
-229        sip_dict = claims.get("sip", dict())
-230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
-231        sip_dict = {
-232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
-233        }
-234        sip = SIPGrants(**sip_dict)
-235
-236        grant_claims = Claims(
-237            identity=claims.get("sub", ""),
-238            name=claims.get("name", ""),
-239            video=video,
-240            sip=sip,
-241            attributes=claims.get("attributes", {}),
-242            metadata=claims.get("metadata", ""),
-243            sha256=claims.get("sha256", ""),
-244        )
-245
-246        if claims.get("roomPreset"):
-247            grant_claims.room_preset = claims.get("roomPreset")
-248        if claims.get("roomConfig"):
-249            grant_claims.room_config = ParseDict(
-250                claims.get("roomConfig"),
-251                RoomConfiguration(),
-252                ignore_unknown_fields=True,
-253            )
-254
-255        return grant_claims
-
- - - - -
- -
- - TokenVerifier( api_key: Optional[str] = None, api_secret: Optional[str] = None, *, leeway: datetime.timedelta = datetime.timedelta(seconds=60)) - - - -
- -
196    def __init__(
-197        self,
-198        api_key: Optional[str] = None,
-199        api_secret: Optional[str] = None,
-200        *,
-201        leeway: datetime.timedelta = DEFAULT_LEEWAY,
-202    ) -> None:
-203        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-204        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-205
-206        if not api_key or not api_secret:
-207            raise ValueError("api_key and api_secret must be set")
-208
-209        self.api_key = api_key
-210        self.api_secret = api_secret
-211        self._leeway = leeway
-
- - - - -
-
-
- api_key - - -
- - - - -
-
-
- api_secret - - -
- - - - -
-
- -
- - def - verify(self, token: str) -> Claims: - - - -
- -
213    def verify(self, token: str) -> Claims:
-214        claims = jwt.decode(
-215            token,
-216            self.api_secret,
-217            issuer=self.api_key,
-218            algorithms=["HS256"],
-219            leeway=self._leeway.total_seconds(),
-220        )
-221
-222        video_dict = claims.get("video", dict())
-223        video_dict = {camel_to_snake(k): v for k, v in video_dict.items()}
-224        video_dict = {
-225            k: v for k, v in video_dict.items() if k in VideoGrants.__dataclass_fields__
-226        }
-227        video = VideoGrants(**video_dict)
-228
-229        sip_dict = claims.get("sip", dict())
-230        sip_dict = {camel_to_snake(k): v for k, v in sip_dict.items()}
-231        sip_dict = {
-232            k: v for k, v in sip_dict.items() if k in SIPGrants.__dataclass_fields__
-233        }
-234        sip = SIPGrants(**sip_dict)
-235
-236        grant_claims = Claims(
-237            identity=claims.get("sub", ""),
-238            name=claims.get("name", ""),
-239            video=video,
-240            sip=sip,
-241            attributes=claims.get("attributes", {}),
-242            metadata=claims.get("metadata", ""),
-243            sha256=claims.get("sha256", ""),
-244        )
-245
-246        if claims.get("roomPreset"):
-247            grant_claims.room_preset = claims.get("roomPreset")
-248        if claims.get("roomConfig"):
-249            grant_claims.room_config = ParseDict(
-250                claims.get("roomConfig"),
-251                RoomConfiguration(),
-252                ignore_unknown_fields=True,
-253            )
-254
-255        return grant_claims
-
- - - - -
-
-
- -
- - def - camel_to_snake(t: str): - - - -
- -
258def camel_to_snake(t: str):
-259    return re.sub(r"(?<!^)(?=[A-Z])", "_", t).lower()
-
- - - - -
-
- -
- - def - snake_to_lower_camel(t: str): - - - -
- -
262def snake_to_lower_camel(t: str):
-263    return "".join(
-264        word.capitalize() if i else word for i, word in enumerate(t.split("_"))
-265    )
-
- - - - -
-
- - \ No newline at end of file diff --git a/docs/livekit/api/agent_dispatch_service.html b/docs/livekit/api/agent_dispatch_service.html deleted file mode 100644 index 2590971f..00000000 --- a/docs/livekit/api/agent_dispatch_service.html +++ /dev/null @@ -1,743 +0,0 @@ - - - - - - - livekit.api.agent_dispatch_service API documentation - - - - - - - - - -
-
-

-livekit.api.agent_dispatch_service

- - - - - - -
  1import aiohttp
-  2from typing import Optional
-  3from livekit.protocol.agent_dispatch import CreateAgentDispatchRequest, AgentDispatch, DeleteAgentDispatchRequest, ListAgentDispatchRequest, ListAgentDispatchResponse
-  4from ._service import Service
-  5from .access_token import VideoGrants
-  6
-  7SVC = "AgentDispatchService"
-  8"""@private"""
-  9
- 10
- 11class AgentDispatchService(Service):
- 12    """Manage agent dispatches. Service APIs require roomAdmin permissions.
- 13
- 14    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 15
- 16    ```python
- 17    from livekit import api
- 18    lkapi = api.LiveKitAPI()
- 19    agent_dispatch = lkapi.agent_dispatch
- 20    ```
- 21    """
- 22
- 23    def __init__(
- 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 25    ):
- 26        super().__init__(session, url, api_key, api_secret)
- 27
- 28    async def create_dispatch(
- 29        self, req: CreateAgentDispatchRequest
- 30    ) -> AgentDispatch:
- 31        """Create an explicit dispatch for an agent to join a room.
- 32
- 33        To use explicit dispatch, your agent must be registered with an `agentName`.
- 34
- 35        Args:
- 36            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
- 37
- 38        Returns:
- 39            AgentDispatch: The created agent dispatch object
- 40        """
- 41        return await self._client.request(
- 42            SVC,
- 43            "CreateDispatch",
- 44            req,
- 45            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
- 46            AgentDispatch,
- 47        )
- 48
- 49    async def delete_dispatch(
- 50        self, dispatch_id: str, room_name: str
- 51    ) -> AgentDispatch:
- 52        """Delete an explicit dispatch for an agent in a room.
- 53
- 54        Args:
- 55            dispatch_id (str): ID of the dispatch to delete
- 56            room_name (str): Name of the room containing the dispatch
- 57
- 58        Returns:
- 59            AgentDispatch: The deleted agent dispatch object
- 60        """
- 61        return await self._client.request(
- 62            SVC,
- 63            "DeleteDispatch",
- 64            DeleteAgentDispatchRequest(
- 65                dispatch_id=dispatch_id,
- 66                room=room_name,
- 67            ),
- 68            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
- 69            AgentDispatch,
- 70        )
- 71
- 72    async def list_dispatch(
- 73        self, room_name: str
- 74    ) -> list[AgentDispatch]:
- 75        """List all agent dispatches in a room.
- 76
- 77        Args:
- 78            room_name (str): Name of the room to list dispatches from
- 79
- 80        Returns:
- 81            list[AgentDispatch]: List of agent dispatch objects in the room
- 82        """
- 83        res = await self._client.request(
- 84            SVC,
- 85            "ListDispatch",
- 86            ListAgentDispatchRequest(room=room_name),
- 87            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
- 88            ListAgentDispatchResponse,
- 89        )
- 90        return list(res.agent_dispatches)
- 91
- 92    async def get_dispatch(
- 93        self, dispatch_id: str, room_name: str
- 94    ) -> Optional[AgentDispatch]:
- 95        """Get an Agent dispatch by ID
- 96
- 97        Args:
- 98            dispatch_id (str): ID of the dispatch to retrieve
- 99            room_name (str): Name of the room containing the dispatch
-100
-101        Returns:
-102            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
-103        """
-104        res = await self._client.request(
-105            SVC,
-106            "ListDispatch",
-107            ListAgentDispatchRequest(
-108                dispatch_id=dispatch_id, room=room_name
-109            ),
-110            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
-111            ListAgentDispatchResponse,
-112        )
-113        if len(res.agent_dispatches) > 0:
-114            return res.agent_dispatches[0]
-115        return None
-
- - -
-
- -
- - class - AgentDispatchService(livekit.api._service.Service): - - - -
- -
 12class AgentDispatchService(Service):
- 13    """Manage agent dispatches. Service APIs require roomAdmin permissions.
- 14
- 15    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 16
- 17    ```python
- 18    from livekit import api
- 19    lkapi = api.LiveKitAPI()
- 20    agent_dispatch = lkapi.agent_dispatch
- 21    ```
- 22    """
- 23
- 24    def __init__(
- 25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 26    ):
- 27        super().__init__(session, url, api_key, api_secret)
- 28
- 29    async def create_dispatch(
- 30        self, req: CreateAgentDispatchRequest
- 31    ) -> AgentDispatch:
- 32        """Create an explicit dispatch for an agent to join a room.
- 33
- 34        To use explicit dispatch, your agent must be registered with an `agentName`.
- 35
- 36        Args:
- 37            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
- 38
- 39        Returns:
- 40            AgentDispatch: The created agent dispatch object
- 41        """
- 42        return await self._client.request(
- 43            SVC,
- 44            "CreateDispatch",
- 45            req,
- 46            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
- 47            AgentDispatch,
- 48        )
- 49
- 50    async def delete_dispatch(
- 51        self, dispatch_id: str, room_name: str
- 52    ) -> AgentDispatch:
- 53        """Delete an explicit dispatch for an agent in a room.
- 54
- 55        Args:
- 56            dispatch_id (str): ID of the dispatch to delete
- 57            room_name (str): Name of the room containing the dispatch
- 58
- 59        Returns:
- 60            AgentDispatch: The deleted agent dispatch object
- 61        """
- 62        return await self._client.request(
- 63            SVC,
- 64            "DeleteDispatch",
- 65            DeleteAgentDispatchRequest(
- 66                dispatch_id=dispatch_id,
- 67                room=room_name,
- 68            ),
- 69            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
- 70            AgentDispatch,
- 71        )
- 72
- 73    async def list_dispatch(
- 74        self, room_name: str
- 75    ) -> list[AgentDispatch]:
- 76        """List all agent dispatches in a room.
- 77
- 78        Args:
- 79            room_name (str): Name of the room to list dispatches from
- 80
- 81        Returns:
- 82            list[AgentDispatch]: List of agent dispatch objects in the room
- 83        """
- 84        res = await self._client.request(
- 85            SVC,
- 86            "ListDispatch",
- 87            ListAgentDispatchRequest(room=room_name),
- 88            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
- 89            ListAgentDispatchResponse,
- 90        )
- 91        return list(res.agent_dispatches)
- 92
- 93    async def get_dispatch(
- 94        self, dispatch_id: str, room_name: str
- 95    ) -> Optional[AgentDispatch]:
- 96        """Get an Agent dispatch by ID
- 97
- 98        Args:
- 99            dispatch_id (str): ID of the dispatch to retrieve
-100            room_name (str): Name of the room containing the dispatch
-101
-102        Returns:
-103            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
-104        """
-105        res = await self._client.request(
-106            SVC,
-107            "ListDispatch",
-108            ListAgentDispatchRequest(
-109                dispatch_id=dispatch_id, room=room_name
-110            ),
-111            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
-112            ListAgentDispatchResponse,
-113        )
-114        if len(res.agent_dispatches) > 0:
-115            return res.agent_dispatches[0]
-116        return None
-
- - -

Manage agent dispatches. Service APIs require roomAdmin permissions.

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-agent_dispatch = lkapi.agent_dispatch
-
-
-
- - -
- -
- - AgentDispatchService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) - - - -
- -
24    def __init__(
-25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-26    ):
-27        super().__init__(session, url, api_key, api_secret)
-
- - - - -
-
- -
- - async def - create_dispatch( self, req: agent_dispatch.CreateAgentDispatchRequest) -> agent_dispatch.AgentDispatch: - - - -
- -
29    async def create_dispatch(
-30        self, req: CreateAgentDispatchRequest
-31    ) -> AgentDispatch:
-32        """Create an explicit dispatch for an agent to join a room.
-33
-34        To use explicit dispatch, your agent must be registered with an `agentName`.
-35
-36        Args:
-37            req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
-38
-39        Returns:
-40            AgentDispatch: The created agent dispatch object
-41        """
-42        return await self._client.request(
-43            SVC,
-44            "CreateDispatch",
-45            req,
-46            self._auth_header(VideoGrants(room_admin=True, room=req.room)),
-47            AgentDispatch,
-48        )
-
- - -

Create an explicit dispatch for an agent to join a room.

- -

To use explicit dispatch, your agent must be registered with an agentName.

- -
Arguments:
- -
    -
  • req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
  • -
- -
Returns:
- -
-

AgentDispatch: The created agent dispatch object

-
-
- - -
-
- -
- - async def - delete_dispatch(self, dispatch_id: str, room_name: str) -> agent_dispatch.AgentDispatch: - - - -
- -
50    async def delete_dispatch(
-51        self, dispatch_id: str, room_name: str
-52    ) -> AgentDispatch:
-53        """Delete an explicit dispatch for an agent in a room.
-54
-55        Args:
-56            dispatch_id (str): ID of the dispatch to delete
-57            room_name (str): Name of the room containing the dispatch
-58
-59        Returns:
-60            AgentDispatch: The deleted agent dispatch object
-61        """
-62        return await self._client.request(
-63            SVC,
-64            "DeleteDispatch",
-65            DeleteAgentDispatchRequest(
-66                dispatch_id=dispatch_id,
-67                room=room_name,
-68            ),
-69            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
-70            AgentDispatch,
-71        )
-
- - -

Delete an explicit dispatch for an agent in a room.

- -
Arguments:
- -
    -
  • dispatch_id (str): ID of the dispatch to delete
  • -
  • room_name (str): Name of the room containing the dispatch
  • -
- -
Returns:
- -
-

AgentDispatch: The deleted agent dispatch object

-
-
- - -
-
- -
- - async def - list_dispatch(self, room_name: str) -> list[agent_dispatch.AgentDispatch]: - - - -
- -
73    async def list_dispatch(
-74        self, room_name: str
-75    ) -> list[AgentDispatch]:
-76        """List all agent dispatches in a room.
-77
-78        Args:
-79            room_name (str): Name of the room to list dispatches from
-80
-81        Returns:
-82            list[AgentDispatch]: List of agent dispatch objects in the room
-83        """
-84        res = await self._client.request(
-85            SVC,
-86            "ListDispatch",
-87            ListAgentDispatchRequest(room=room_name),
-88            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
-89            ListAgentDispatchResponse,
-90        )
-91        return list(res.agent_dispatches)
-
- - -

List all agent dispatches in a room.

- -
Arguments:
- -
    -
  • room_name (str): Name of the room to list dispatches from
  • -
- -
Returns:
- -
-

list[AgentDispatch]: List of agent dispatch objects in the room

-
-
- - -
-
- -
- - async def - get_dispatch( self, dispatch_id: str, room_name: str) -> Optional[agent_dispatch.AgentDispatch]: - - - -
- -
 93    async def get_dispatch(
- 94        self, dispatch_id: str, room_name: str
- 95    ) -> Optional[AgentDispatch]:
- 96        """Get an Agent dispatch by ID
- 97
- 98        Args:
- 99            dispatch_id (str): ID of the dispatch to retrieve
-100            room_name (str): Name of the room containing the dispatch
-101
-102        Returns:
-103            Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise
-104        """
-105        res = await self._client.request(
-106            SVC,
-107            "ListDispatch",
-108            ListAgentDispatchRequest(
-109                dispatch_id=dispatch_id, room=room_name
-110            ),
-111            self._auth_header(VideoGrants(room_admin=True, room=room_name)),
-112            ListAgentDispatchResponse,
-113        )
-114        if len(res.agent_dispatches) > 0:
-115            return res.agent_dispatches[0]
-116        return None
-
- - -

Get an Agent dispatch by ID

- -
Arguments:
- -
    -
  • dispatch_id (str): ID of the dispatch to retrieve
  • -
  • room_name (str): Name of the room containing the dispatch
  • -
- -
Returns:
- -
-

Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise

-
-
- - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/egress_service.html b/docs/livekit/api/egress_service.html deleted file mode 100644 index f215e47c..00000000 --- a/docs/livekit/api/egress_service.html +++ /dev/null @@ -1,810 +0,0 @@ - - - - - - - livekit.api.egress_service API documentation - - - - - - - - - -
-
-

-livekit.api.egress_service

- - - - - - -
  1import aiohttp
-  2from livekit.protocol.egress import RoomCompositeEgressRequest, WebEgressRequest, ParticipantEgressRequest, TrackCompositeEgressRequest, TrackEgressRequest, UpdateLayoutRequest, UpdateStreamRequest, ListEgressRequest, StopEgressRequest, EgressInfo, ListEgressResponse
-  3from ._service import Service
-  4from .access_token import VideoGrants
-  5
-  6SVC = "Egress"
-  7"""@private"""
-  8
-  9class EgressService(Service):
- 10    """Client for LiveKit Egress Service API
- 11    
- 12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 13    
- 14    ```python
- 15    from livekit import api
- 16    lkapi = api.LiveKitAPI()
- 17    egress = lkapi.egress
- 18    ```
- 19    
- 20    Also see https://docs.livekit.io/home/egress/overview/
- 21    """
- 22    def __init__(
- 23        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 24    ):
- 25        super().__init__(session, url, api_key, api_secret)
- 26
- 27    async def start_room_composite_egress(
- 28        self, start: RoomCompositeEgressRequest
- 29    ) -> EgressInfo:
- 30        return await self._client.request(
- 31            SVC,
- 32            "StartRoomCompositeEgress",
- 33            start,
- 34            self._auth_header(VideoGrants(room_record=True)),
- 35            EgressInfo,
- 36        )
- 37
- 38    async def start_web_egress(
- 39        self, start: WebEgressRequest
- 40    ) -> EgressInfo:
- 41        return await self._client.request(
- 42            SVC,
- 43            "StartWebEgress",
- 44            start,
- 45            self._auth_header(VideoGrants(room_record=True)),
- 46            EgressInfo,
- 47        )
- 48
- 49    async def start_participant_egress(
- 50        self, start: ParticipantEgressRequest
- 51    ) -> EgressInfo:
- 52        return await self._client.request(
- 53            SVC,
- 54            "StartParticipantEgress",
- 55            start,
- 56            self._auth_header(VideoGrants(room_record=True)),
- 57            EgressInfo,
- 58        )
- 59
- 60    async def start_track_composite_egress(
- 61        self, start: TrackCompositeEgressRequest
- 62    ) -> EgressInfo:
- 63        return await self._client.request(
- 64            SVC,
- 65            "StartTrackCompositeEgress",
- 66            start,
- 67            self._auth_header(VideoGrants(room_record=True)),
- 68            EgressInfo,
- 69        )
- 70
- 71    async def start_track_egress(
- 72        self, start: TrackEgressRequest
- 73    ) -> EgressInfo:
- 74        return await self._client.request(
- 75            SVC,
- 76            "StartTrackEgress",
- 77            start,
- 78            self._auth_header(VideoGrants(room_record=True)),
- 79            EgressInfo,
- 80        )
- 81
- 82    async def update_layout(
- 83        self, update: UpdateLayoutRequest
- 84    ) -> EgressInfo:
- 85        return await self._client.request(
- 86            SVC,
- 87            "UpdateLayout",
- 88            update,
- 89            self._auth_header(VideoGrants(room_record=True)),
- 90            EgressInfo,
- 91        )
- 92
- 93    async def update_stream(
- 94        self, update: UpdateStreamRequest
- 95    ) -> EgressInfo:
- 96        return await self._client.request(
- 97            SVC,
- 98            "UpdateStream",
- 99            update,
-100            self._auth_header(VideoGrants(room_record=True)),
-101            EgressInfo,
-102        )
-103
-104    async def list_egress(
-105        self, list: ListEgressRequest
-106    ) -> ListEgressResponse:
-107        return await self._client.request(
-108            SVC,
-109            "ListEgress",
-110            list,
-111            self._auth_header(VideoGrants(room_record=True)),
-112            ListEgressResponse,
-113        )
-114
-115    async def stop_egress(
-116        self, stop: StopEgressRequest
-117    ) -> EgressInfo:
-118        return await self._client.request(
-119            SVC,
-120            "StopEgress",
-121            stop,
-122            self._auth_header(VideoGrants(room_record=True)),
-123            EgressInfo,
-124        )
-
- - -
-
- -
- - class - EgressService(livekit.api._service.Service): - - - -
- -
 10class EgressService(Service):
- 11    """Client for LiveKit Egress Service API
- 12    
- 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 14    
- 15    ```python
- 16    from livekit import api
- 17    lkapi = api.LiveKitAPI()
- 18    egress = lkapi.egress
- 19    ```
- 20    
- 21    Also see https://docs.livekit.io/home/egress/overview/
- 22    """
- 23    def __init__(
- 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 25    ):
- 26        super().__init__(session, url, api_key, api_secret)
- 27
- 28    async def start_room_composite_egress(
- 29        self, start: RoomCompositeEgressRequest
- 30    ) -> EgressInfo:
- 31        return await self._client.request(
- 32            SVC,
- 33            "StartRoomCompositeEgress",
- 34            start,
- 35            self._auth_header(VideoGrants(room_record=True)),
- 36            EgressInfo,
- 37        )
- 38
- 39    async def start_web_egress(
- 40        self, start: WebEgressRequest
- 41    ) -> EgressInfo:
- 42        return await self._client.request(
- 43            SVC,
- 44            "StartWebEgress",
- 45            start,
- 46            self._auth_header(VideoGrants(room_record=True)),
- 47            EgressInfo,
- 48        )
- 49
- 50    async def start_participant_egress(
- 51        self, start: ParticipantEgressRequest
- 52    ) -> EgressInfo:
- 53        return await self._client.request(
- 54            SVC,
- 55            "StartParticipantEgress",
- 56            start,
- 57            self._auth_header(VideoGrants(room_record=True)),
- 58            EgressInfo,
- 59        )
- 60
- 61    async def start_track_composite_egress(
- 62        self, start: TrackCompositeEgressRequest
- 63    ) -> EgressInfo:
- 64        return await self._client.request(
- 65            SVC,
- 66            "StartTrackCompositeEgress",
- 67            start,
- 68            self._auth_header(VideoGrants(room_record=True)),
- 69            EgressInfo,
- 70        )
- 71
- 72    async def start_track_egress(
- 73        self, start: TrackEgressRequest
- 74    ) -> EgressInfo:
- 75        return await self._client.request(
- 76            SVC,
- 77            "StartTrackEgress",
- 78            start,
- 79            self._auth_header(VideoGrants(room_record=True)),
- 80            EgressInfo,
- 81        )
- 82
- 83    async def update_layout(
- 84        self, update: UpdateLayoutRequest
- 85    ) -> EgressInfo:
- 86        return await self._client.request(
- 87            SVC,
- 88            "UpdateLayout",
- 89            update,
- 90            self._auth_header(VideoGrants(room_record=True)),
- 91            EgressInfo,
- 92        )
- 93
- 94    async def update_stream(
- 95        self, update: UpdateStreamRequest
- 96    ) -> EgressInfo:
- 97        return await self._client.request(
- 98            SVC,
- 99            "UpdateStream",
-100            update,
-101            self._auth_header(VideoGrants(room_record=True)),
-102            EgressInfo,
-103        )
-104
-105    async def list_egress(
-106        self, list: ListEgressRequest
-107    ) -> ListEgressResponse:
-108        return await self._client.request(
-109            SVC,
-110            "ListEgress",
-111            list,
-112            self._auth_header(VideoGrants(room_record=True)),
-113            ListEgressResponse,
-114        )
-115
-116    async def stop_egress(
-117        self, stop: StopEgressRequest
-118    ) -> EgressInfo:
-119        return await self._client.request(
-120            SVC,
-121            "StopEgress",
-122            stop,
-123            self._auth_header(VideoGrants(room_record=True)),
-124            EgressInfo,
-125        )
-
- - -

Client for LiveKit Egress Service API

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-egress = lkapi.egress
-
-
- -

Also see https://docs.livekit.io/home/egress/overview/

-
- - -
- -
- - EgressService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) - - - -
- -
23    def __init__(
-24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-25    ):
-26        super().__init__(session, url, api_key, api_secret)
-
- - - - -
-
- -
- - async def - start_room_composite_egress(self, start: egress.RoomCompositeEgressRequest) -> egress.EgressInfo: - - - -
- -
28    async def start_room_composite_egress(
-29        self, start: RoomCompositeEgressRequest
-30    ) -> EgressInfo:
-31        return await self._client.request(
-32            SVC,
-33            "StartRoomCompositeEgress",
-34            start,
-35            self._auth_header(VideoGrants(room_record=True)),
-36            EgressInfo,
-37        )
-
- - - - -
-
- -
- - async def - start_web_egress(self, start: egress.WebEgressRequest) -> egress.EgressInfo: - - - -
- -
39    async def start_web_egress(
-40        self, start: WebEgressRequest
-41    ) -> EgressInfo:
-42        return await self._client.request(
-43            SVC,
-44            "StartWebEgress",
-45            start,
-46            self._auth_header(VideoGrants(room_record=True)),
-47            EgressInfo,
-48        )
-
- - - - -
-
- -
- - async def - start_participant_egress(self, start: egress.ParticipantEgressRequest) -> egress.EgressInfo: - - - -
- -
50    async def start_participant_egress(
-51        self, start: ParticipantEgressRequest
-52    ) -> EgressInfo:
-53        return await self._client.request(
-54            SVC,
-55            "StartParticipantEgress",
-56            start,
-57            self._auth_header(VideoGrants(room_record=True)),
-58            EgressInfo,
-59        )
-
- - - - -
-
- -
- - async def - start_track_composite_egress(self, start: egress.TrackCompositeEgressRequest) -> egress.EgressInfo: - - - -
- -
61    async def start_track_composite_egress(
-62        self, start: TrackCompositeEgressRequest
-63    ) -> EgressInfo:
-64        return await self._client.request(
-65            SVC,
-66            "StartTrackCompositeEgress",
-67            start,
-68            self._auth_header(VideoGrants(room_record=True)),
-69            EgressInfo,
-70        )
-
- - - - -
-
- -
- - async def - start_track_egress(self, start: egress.TrackEgressRequest) -> egress.EgressInfo: - - - -
- -
72    async def start_track_egress(
-73        self, start: TrackEgressRequest
-74    ) -> EgressInfo:
-75        return await self._client.request(
-76            SVC,
-77            "StartTrackEgress",
-78            start,
-79            self._auth_header(VideoGrants(room_record=True)),
-80            EgressInfo,
-81        )
-
- - - - -
-
- -
- - async def - update_layout(self, update: egress.UpdateLayoutRequest) -> egress.EgressInfo: - - - -
- -
83    async def update_layout(
-84        self, update: UpdateLayoutRequest
-85    ) -> EgressInfo:
-86        return await self._client.request(
-87            SVC,
-88            "UpdateLayout",
-89            update,
-90            self._auth_header(VideoGrants(room_record=True)),
-91            EgressInfo,
-92        )
-
- - - - -
-
- -
- - async def - update_stream(self, update: egress.UpdateStreamRequest) -> egress.EgressInfo: - - - -
- -
 94    async def update_stream(
- 95        self, update: UpdateStreamRequest
- 96    ) -> EgressInfo:
- 97        return await self._client.request(
- 98            SVC,
- 99            "UpdateStream",
-100            update,
-101            self._auth_header(VideoGrants(room_record=True)),
-102            EgressInfo,
-103        )
-
- - - - -
-
- -
- - async def - list_egress(self, list: egress.ListEgressRequest) -> egress.ListEgressResponse: - - - -
- -
105    async def list_egress(
-106        self, list: ListEgressRequest
-107    ) -> ListEgressResponse:
-108        return await self._client.request(
-109            SVC,
-110            "ListEgress",
-111            list,
-112            self._auth_header(VideoGrants(room_record=True)),
-113            ListEgressResponse,
-114        )
-
- - - - -
-
- -
- - async def - stop_egress(self, stop: egress.StopEgressRequest) -> egress.EgressInfo: - - - -
- -
116    async def stop_egress(
-117        self, stop: StopEgressRequest
-118    ) -> EgressInfo:
-119        return await self._client.request(
-120            SVC,
-121            "StopEgress",
-122            stop,
-123            self._auth_header(VideoGrants(room_record=True)),
-124            EgressInfo,
-125        )
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/ingress_service.html b/docs/livekit/api/ingress_service.html deleted file mode 100644 index e75cb433..00000000 --- a/docs/livekit/api/ingress_service.html +++ /dev/null @@ -1,550 +0,0 @@ - - - - - - - livekit.api.ingress_service API documentation - - - - - - - - - -
-
-

-livekit.api.ingress_service

- - - - - - -
 1import aiohttp
- 2from livekit.protocol.ingress import CreateIngressRequest, IngressInfo, UpdateIngressRequest, ListIngressRequest, DeleteIngressRequest, ListIngressResponse
- 3from ._service import Service
- 4from .access_token import VideoGrants
- 5
- 6SVC = "Ingress"
- 7"""@private"""
- 8
- 9class IngressService(Service):
-10    """Client for LiveKit Ingress Service API
-11    
-12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
-13    
-14    ```python
-15    from livekit import api
-16    lkapi = api.LiveKitAPI()
-17    ingress = lkapi.ingress
-18    ```
-19    
-20    Also see https://docs.livekit.io/home/ingress/overview/
-21    """
-22    def __init__(
-23        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-24    ):
-25        super().__init__(session, url, api_key, api_secret)
-26
-27    async def create_ingress(
-28        self, create: CreateIngressRequest
-29    ) -> IngressInfo:
-30        return await self._client.request(
-31            SVC,
-32            "CreateIngress",
-33            create,
-34            self._auth_header(VideoGrants(ingress_admin=True)),
-35            IngressInfo,
-36        )
-37
-38    async def update_ingress(
-39        self, update: UpdateIngressRequest
-40    ) -> IngressInfo:
-41        return await self._client.request(
-42            SVC,
-43            "UpdateIngress",
-44            update,
-45            self._auth_header(VideoGrants(ingress_admin=True)),
-46            IngressInfo,
-47        )
-48
-49    async def list_ingress(
-50        self, list: ListIngressRequest
-51    ) -> ListIngressResponse:
-52        return await self._client.request(
-53            SVC,
-54            "ListIngress",
-55            list,
-56            self._auth_header(VideoGrants(ingress_admin=True)),
-57            ListIngressResponse,
-58        )
-59
-60    async def delete_ingress(
-61        self, delete: DeleteIngressRequest
-62    ) -> IngressInfo:
-63        return await self._client.request(
-64            SVC,
-65            "DeleteIngress",
-66            delete,
-67            self._auth_header(VideoGrants(ingress_admin=True)),
-68            IngressInfo,
-69        )
-
- - -
-
- -
- - class - IngressService(livekit.api._service.Service): - - - -
- -
10class IngressService(Service):
-11    """Client for LiveKit Ingress Service API
-12    
-13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
-14    
-15    ```python
-16    from livekit import api
-17    lkapi = api.LiveKitAPI()
-18    ingress = lkapi.ingress
-19    ```
-20    
-21    Also see https://docs.livekit.io/home/ingress/overview/
-22    """
-23    def __init__(
-24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-25    ):
-26        super().__init__(session, url, api_key, api_secret)
-27
-28    async def create_ingress(
-29        self, create: CreateIngressRequest
-30    ) -> IngressInfo:
-31        return await self._client.request(
-32            SVC,
-33            "CreateIngress",
-34            create,
-35            self._auth_header(VideoGrants(ingress_admin=True)),
-36            IngressInfo,
-37        )
-38
-39    async def update_ingress(
-40        self, update: UpdateIngressRequest
-41    ) -> IngressInfo:
-42        return await self._client.request(
-43            SVC,
-44            "UpdateIngress",
-45            update,
-46            self._auth_header(VideoGrants(ingress_admin=True)),
-47            IngressInfo,
-48        )
-49
-50    async def list_ingress(
-51        self, list: ListIngressRequest
-52    ) -> ListIngressResponse:
-53        return await self._client.request(
-54            SVC,
-55            "ListIngress",
-56            list,
-57            self._auth_header(VideoGrants(ingress_admin=True)),
-58            ListIngressResponse,
-59        )
-60
-61    async def delete_ingress(
-62        self, delete: DeleteIngressRequest
-63    ) -> IngressInfo:
-64        return await self._client.request(
-65            SVC,
-66            "DeleteIngress",
-67            delete,
-68            self._auth_header(VideoGrants(ingress_admin=True)),
-69            IngressInfo,
-70        )
-
- - -

Client for LiveKit Ingress Service API

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-ingress = lkapi.ingress
-
-
- -

Also see https://docs.livekit.io/home/ingress/overview/

-
- - -
- -
- - IngressService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) - - - -
- -
23    def __init__(
-24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-25    ):
-26        super().__init__(session, url, api_key, api_secret)
-
- - - - -
-
- -
- - async def - create_ingress(self, create: ingress.CreateIngressRequest) -> ingress.IngressInfo: - - - -
- -
28    async def create_ingress(
-29        self, create: CreateIngressRequest
-30    ) -> IngressInfo:
-31        return await self._client.request(
-32            SVC,
-33            "CreateIngress",
-34            create,
-35            self._auth_header(VideoGrants(ingress_admin=True)),
-36            IngressInfo,
-37        )
-
- - - - -
-
- -
- - async def - update_ingress(self, update: ingress.UpdateIngressRequest) -> ingress.IngressInfo: - - - -
- -
39    async def update_ingress(
-40        self, update: UpdateIngressRequest
-41    ) -> IngressInfo:
-42        return await self._client.request(
-43            SVC,
-44            "UpdateIngress",
-45            update,
-46            self._auth_header(VideoGrants(ingress_admin=True)),
-47            IngressInfo,
-48        )
-
- - - - -
-
- -
- - async def - list_ingress(self, list: ingress.ListIngressRequest) -> ingress.ListIngressResponse: - - - -
- -
50    async def list_ingress(
-51        self, list: ListIngressRequest
-52    ) -> ListIngressResponse:
-53        return await self._client.request(
-54            SVC,
-55            "ListIngress",
-56            list,
-57            self._auth_header(VideoGrants(ingress_admin=True)),
-58            ListIngressResponse,
-59        )
-
- - - - -
-
- -
- - async def - delete_ingress(self, delete: ingress.DeleteIngressRequest) -> ingress.IngressInfo: - - - -
- -
61    async def delete_ingress(
-62        self, delete: DeleteIngressRequest
-63    ) -> IngressInfo:
-64        return await self._client.request(
-65            SVC,
-66            "DeleteIngress",
-67            delete,
-68            self._auth_header(VideoGrants(ingress_admin=True)),
-69            IngressInfo,
-70        )
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/livekit_api.html b/docs/livekit/api/livekit_api.html deleted file mode 100644 index 5046c192..00000000 --- a/docs/livekit/api/livekit_api.html +++ /dev/null @@ -1,665 +0,0 @@ - - - - - - - livekit.api.livekit_api API documentation - - - - - - - - - -
-
-

-livekit.api.livekit_api

- - - - - - -
 1import aiohttp
- 2import os
- 3from .room_service import RoomService
- 4from .egress_service import EgressService
- 5from .ingress_service import IngressService
- 6from .sip_service import SipService
- 7from .agent_dispatch_service import AgentDispatchService
- 8from typing import Optional
- 9
-10
-11class LiveKitAPI:
-12    """LiveKit Server API Client
-13    
-14    This class is the main entrypoint, which exposes all services.
-15
-16    Usage:
-17
-18    ```python
-19    from livekit import api
-20    lkapi = api.LiveKitAPI()
-21    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
-22    ```
-23    """
-24
-25    def __init__(
-26        self,
-27        url: Optional[str] = None,
-28        api_key: Optional[str] = None,
-29        api_secret: Optional[str] = None,
-30        *,
-31        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
-32    ):
-33        """Create a new LiveKitAPI instance.
-34        
-35        Args:
-36            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
-37            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
-38            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
-39            timeout: Request timeout (default: 60 seconds)
-40        """
-41        url = url or os.getenv("LIVEKIT_URL")
-42        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-43        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-44
-45        if not url:
-46            raise ValueError("url must be set")
-47
-48        if not api_key or not api_secret:
-49            raise ValueError("api_key and api_secret must be set")
-50
-51        self._session = aiohttp.ClientSession(timeout=timeout)
-52        self._room = RoomService(self._session, url, api_key, api_secret)
-53        self._ingress = IngressService(self._session, url, api_key, api_secret)
-54        self._egress = EgressService(self._session, url, api_key, api_secret)
-55        self._sip = SipService(self._session, url, api_key, api_secret)
-56        self._agent_dispatch = AgentDispatchService(
-57            self._session, url, api_key, api_secret
-58        )
-59
-60    @property
-61    def agent_dispatch(self) -> AgentDispatchService:
-62        """Instance of the AgentDispatchService
-63        
-64        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
-65        return self._agent_dispatch
-66
-67    @property
-68    def room(self) -> RoomService:
-69        """Instance of the RoomService
-70        
-71        See `livekit.api.room_service.RoomService`"""
-72        return self._room
-73
-74    @property
-75    def ingress(self) -> IngressService:
-76        """Instance of the IngressService
-77        
-78        See `livekit.api.ingress_service.IngressService`"""
-79        return self._ingress
-80
-81    @property
-82    def egress(self) -> EgressService:
-83        """Instance of the EgressService
-84        
-85        See `livekit.api.egress_service.EgressService`"""
-86        return self._egress
-87
-88    @property
-89    def sip(self) -> SipService:
-90        """Instance of the SipService
-91        
-92        See `livekit.api.sip_service.SipService`"""
-93        return self._sip
-94
-95    async def aclose(self):
-96        """@private"""
-97        await self._session.close()
-
- - -
-
- -
- - class - LiveKitAPI: - - - -
- -
12class LiveKitAPI:
-13    """LiveKit Server API Client
-14    
-15    This class is the main entrypoint, which exposes all services.
-16
-17    Usage:
-18
-19    ```python
-20    from livekit import api
-21    lkapi = api.LiveKitAPI()
-22    rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
-23    ```
-24    """
-25
-26    def __init__(
-27        self,
-28        url: Optional[str] = None,
-29        api_key: Optional[str] = None,
-30        api_secret: Optional[str] = None,
-31        *,
-32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
-33    ):
-34        """Create a new LiveKitAPI instance.
-35        
-36        Args:
-37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
-38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
-39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
-40            timeout: Request timeout (default: 60 seconds)
-41        """
-42        url = url or os.getenv("LIVEKIT_URL")
-43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-45
-46        if not url:
-47            raise ValueError("url must be set")
-48
-49        if not api_key or not api_secret:
-50            raise ValueError("api_key and api_secret must be set")
-51
-52        self._session = aiohttp.ClientSession(timeout=timeout)
-53        self._room = RoomService(self._session, url, api_key, api_secret)
-54        self._ingress = IngressService(self._session, url, api_key, api_secret)
-55        self._egress = EgressService(self._session, url, api_key, api_secret)
-56        self._sip = SipService(self._session, url, api_key, api_secret)
-57        self._agent_dispatch = AgentDispatchService(
-58            self._session, url, api_key, api_secret
-59        )
-60
-61    @property
-62    def agent_dispatch(self) -> AgentDispatchService:
-63        """Instance of the AgentDispatchService
-64        
-65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
-66        return self._agent_dispatch
-67
-68    @property
-69    def room(self) -> RoomService:
-70        """Instance of the RoomService
-71        
-72        See `livekit.api.room_service.RoomService`"""
-73        return self._room
-74
-75    @property
-76    def ingress(self) -> IngressService:
-77        """Instance of the IngressService
-78        
-79        See `livekit.api.ingress_service.IngressService`"""
-80        return self._ingress
-81
-82    @property
-83    def egress(self) -> EgressService:
-84        """Instance of the EgressService
-85        
-86        See `livekit.api.egress_service.EgressService`"""
-87        return self._egress
-88
-89    @property
-90    def sip(self) -> SipService:
-91        """Instance of the SipService
-92        
-93        See `livekit.api.sip_service.SipService`"""
-94        return self._sip
-95
-96    async def aclose(self):
-97        """@private"""
-98        await self._session.close()
-
- - -

LiveKit Server API Client

- -

This class is the main entrypoint, which exposes all services.

- -

Usage:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-rooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))
-
-
-
- - -
- -
- - LiveKitAPI( url: Optional[str] = None, api_key: Optional[str] = None, api_secret: Optional[str] = None, *, timeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5)) - - - -
- -
26    def __init__(
-27        self,
-28        url: Optional[str] = None,
-29        api_key: Optional[str] = None,
-30        api_secret: Optional[str] = None,
-31        *,
-32        timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60),  # 60 seconds
-33    ):
-34        """Create a new LiveKitAPI instance.
-35        
-36        Args:
-37            url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided)
-38            api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided)
-39            api_secret: API secret (read from `LIVEKIT_API_SECRET` environment variable if not provided)
-40            timeout: Request timeout (default: 60 seconds)
-41        """
-42        url = url or os.getenv("LIVEKIT_URL")
-43        api_key = api_key or os.getenv("LIVEKIT_API_KEY")
-44        api_secret = api_secret or os.getenv("LIVEKIT_API_SECRET")
-45
-46        if not url:
-47            raise ValueError("url must be set")
-48
-49        if not api_key or not api_secret:
-50            raise ValueError("api_key and api_secret must be set")
-51
-52        self._session = aiohttp.ClientSession(timeout=timeout)
-53        self._room = RoomService(self._session, url, api_key, api_secret)
-54        self._ingress = IngressService(self._session, url, api_key, api_secret)
-55        self._egress = EgressService(self._session, url, api_key, api_secret)
-56        self._sip = SipService(self._session, url, api_key, api_secret)
-57        self._agent_dispatch = AgentDispatchService(
-58            self._session, url, api_key, api_secret
-59        )
-
- - -

Create a new LiveKitAPI instance.

- -
Arguments:
- -
    -
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • -
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • -
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • -
  • timeout: Request timeout (default: 60 seconds)
  • -
-
- - -
-
- -
- agent_dispatch: livekit.api.agent_dispatch_service.AgentDispatchService - - - -
- -
61    @property
-62    def agent_dispatch(self) -> AgentDispatchService:
-63        """Instance of the AgentDispatchService
-64        
-65        See `livekit.api.agent_dispatch_service.AgentDispatchService`"""
-66        return self._agent_dispatch
-
- - -

Instance of the AgentDispatchService

- -

See livekit.api.agent_dispatch_service.AgentDispatchService

-
- - -
-
- -
- room: livekit.api.room_service.RoomService - - - -
- -
68    @property
-69    def room(self) -> RoomService:
-70        """Instance of the RoomService
-71        
-72        See `livekit.api.room_service.RoomService`"""
-73        return self._room
-
- - -

Instance of the RoomService

- -

See livekit.api.room_service.RoomService

-
- - -
-
- -
- ingress: livekit.api.ingress_service.IngressService - - - -
- -
75    @property
-76    def ingress(self) -> IngressService:
-77        """Instance of the IngressService
-78        
-79        See `livekit.api.ingress_service.IngressService`"""
-80        return self._ingress
-
- - -

Instance of the IngressService

- -

See livekit.api.ingress_service.IngressService

-
- - -
-
- -
- egress: livekit.api.egress_service.EgressService - - - -
- -
82    @property
-83    def egress(self) -> EgressService:
-84        """Instance of the EgressService
-85        
-86        See `livekit.api.egress_service.EgressService`"""
-87        return self._egress
-
- - -

Instance of the EgressService

- -

See livekit.api.egress_service.EgressService

-
- - -
-
- -
- sip: livekit.api.sip_service.SipService - - - -
- -
89    @property
-90    def sip(self) -> SipService:
-91        """Instance of the SipService
-92        
-93        See `livekit.api.sip_service.SipService`"""
-94        return self._sip
-
- - -

Instance of the SipService

- -

See livekit.api.sip_service.SipService

-
- - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/room_service.html b/docs/livekit/api/room_service.html deleted file mode 100644 index 3f96affc..00000000 --- a/docs/livekit/api/room_service.html +++ /dev/null @@ -1,882 +0,0 @@ - - - - - - - livekit.api.room_service API documentation - - - - - - - - - -
-
-

-livekit.api.room_service

- - - - - - -
  1import aiohttp
-  2from livekit.protocol.room import CreateRoomRequest, ListRoomsRequest, DeleteRoomRequest, ListRoomsResponse, DeleteRoomResponse, ListParticipantsRequest, ListParticipantsResponse, RoomParticipantIdentity, MuteRoomTrackRequest, MuteRoomTrackResponse, UpdateParticipantRequest, UpdateSubscriptionsRequest, SendDataRequest, SendDataResponse, UpdateRoomMetadataRequest, RemoveParticipantResponse, UpdateSubscriptionsResponse
-  3from livekit.protocol.models import Room, ParticipantInfo
-  4from ._service import Service
-  5from .access_token import VideoGrants
-  6
-  7SVC = "RoomService"
-  8"""@private"""
-  9
- 10class RoomService(Service):
- 11    """Client for LiveKit RoomService API
- 12    
- 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 14    
- 15    ```python
- 16    from livekit import api
- 17    lkapi = api.LiveKitAPI()
- 18    room_service = lkapi.room
- 19    ```
- 20    
- 21    Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/
- 22    """
- 23    def __init__(
- 24        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 25    ):
- 26        super().__init__(session, url, api_key, api_secret)
- 27
- 28    async def create_room(self, create: CreateRoomRequest) -> Room:
- 29        return await self._client.request(
- 30            SVC,
- 31            "CreateRoom",
- 32            create,
- 33            self._auth_header(VideoGrants(room_create=True)),
- 34            Room,
- 35        )
- 36
- 37    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
- 38        return await self._client.request(
- 39            SVC,
- 40            "ListRooms",
- 41            list,
- 42            self._auth_header(VideoGrants(room_list=True)),
- 43            ListRoomsResponse,
- 44        )
- 45
- 46    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
- 47        return await self._client.request(
- 48            SVC,
- 49            "DeleteRoom",
- 50            delete,
- 51            self._auth_header(VideoGrants(room_create=True)),
- 52            DeleteRoomResponse,
- 53        )
- 54
- 55    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
- 56        return await self._client.request(
- 57            SVC,
- 58            "UpdateRoomMetadata",
- 59            update,
- 60            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
- 61            Room,
- 62        )
- 63
- 64    async def list_participants(
- 65        self, list: ListParticipantsRequest
- 66    ) -> ListParticipantsResponse:
- 67        return await self._client.request(
- 68            SVC,
- 69            "ListParticipants",
- 70            list,
- 71            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
- 72            ListParticipantsResponse,
- 73        )
- 74
- 75    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
- 76        return await self._client.request(
- 77            SVC,
- 78            "GetParticipant",
- 79            get,
- 80            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
- 81            ParticipantInfo,
- 82        )
- 83
- 84    async def remove_participant(
- 85        self, remove: RoomParticipantIdentity
- 86    ) -> RemoveParticipantResponse:
- 87        return await self._client.request(
- 88            SVC,
- 89            "RemoveParticipant",
- 90            remove,
- 91            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
- 92            RemoveParticipantResponse,
- 93        )
- 94
- 95    async def mute_published_track(
- 96        self,
- 97        update: MuteRoomTrackRequest,
- 98    ) -> MuteRoomTrackResponse:
- 99        return await self._client.request(
-100            SVC,
-101            "MutePublishedTrack",
-102            update,
-103            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-104            MuteRoomTrackResponse,
-105        )
-106
-107    async def update_participant(
-108        self, update: UpdateParticipantRequest
-109    ) -> ParticipantInfo:
-110        return await self._client.request(
-111            SVC,
-112            "UpdateParticipant",
-113            update,
-114            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-115            ParticipantInfo,
-116        )
-117
-118    async def update_subscriptions(
-119        self, update: UpdateSubscriptionsRequest
-120    ) -> UpdateSubscriptionsResponse:
-121        return await self._client.request(
-122            SVC,
-123            "UpdateSubscriptions",
-124            update,
-125            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-126            UpdateSubscriptionsResponse,
-127        )
-128
-129    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
-130        return await self._client.request(
-131            SVC,
-132            "SendData",
-133            send,
-134            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
-135            SendDataResponse,
-136        )
-
- - -
-
- -
- - class - RoomService(livekit.api._service.Service): - - - -
- -
 11class RoomService(Service):
- 12    """Client for LiveKit RoomService API
- 13    
- 14    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 15    
- 16    ```python
- 17    from livekit import api
- 18    lkapi = api.LiveKitAPI()
- 19    room_service = lkapi.room
- 20    ```
- 21    
- 22    Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/
- 23    """
- 24    def __init__(
- 25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 26    ):
- 27        super().__init__(session, url, api_key, api_secret)
- 28
- 29    async def create_room(self, create: CreateRoomRequest) -> Room:
- 30        return await self._client.request(
- 31            SVC,
- 32            "CreateRoom",
- 33            create,
- 34            self._auth_header(VideoGrants(room_create=True)),
- 35            Room,
- 36        )
- 37
- 38    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
- 39        return await self._client.request(
- 40            SVC,
- 41            "ListRooms",
- 42            list,
- 43            self._auth_header(VideoGrants(room_list=True)),
- 44            ListRoomsResponse,
- 45        )
- 46
- 47    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
- 48        return await self._client.request(
- 49            SVC,
- 50            "DeleteRoom",
- 51            delete,
- 52            self._auth_header(VideoGrants(room_create=True)),
- 53            DeleteRoomResponse,
- 54        )
- 55
- 56    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
- 57        return await self._client.request(
- 58            SVC,
- 59            "UpdateRoomMetadata",
- 60            update,
- 61            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
- 62            Room,
- 63        )
- 64
- 65    async def list_participants(
- 66        self, list: ListParticipantsRequest
- 67    ) -> ListParticipantsResponse:
- 68        return await self._client.request(
- 69            SVC,
- 70            "ListParticipants",
- 71            list,
- 72            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
- 73            ListParticipantsResponse,
- 74        )
- 75
- 76    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
- 77        return await self._client.request(
- 78            SVC,
- 79            "GetParticipant",
- 80            get,
- 81            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
- 82            ParticipantInfo,
- 83        )
- 84
- 85    async def remove_participant(
- 86        self, remove: RoomParticipantIdentity
- 87    ) -> RemoveParticipantResponse:
- 88        return await self._client.request(
- 89            SVC,
- 90            "RemoveParticipant",
- 91            remove,
- 92            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
- 93            RemoveParticipantResponse,
- 94        )
- 95
- 96    async def mute_published_track(
- 97        self,
- 98        update: MuteRoomTrackRequest,
- 99    ) -> MuteRoomTrackResponse:
-100        return await self._client.request(
-101            SVC,
-102            "MutePublishedTrack",
-103            update,
-104            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-105            MuteRoomTrackResponse,
-106        )
-107
-108    async def update_participant(
-109        self, update: UpdateParticipantRequest
-110    ) -> ParticipantInfo:
-111        return await self._client.request(
-112            SVC,
-113            "UpdateParticipant",
-114            update,
-115            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-116            ParticipantInfo,
-117        )
-118
-119    async def update_subscriptions(
-120        self, update: UpdateSubscriptionsRequest
-121    ) -> UpdateSubscriptionsResponse:
-122        return await self._client.request(
-123            SVC,
-124            "UpdateSubscriptions",
-125            update,
-126            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-127            UpdateSubscriptionsResponse,
-128        )
-129
-130    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
-131        return await self._client.request(
-132            SVC,
-133            "SendData",
-134            send,
-135            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
-136            SendDataResponse,
-137        )
-
- - -

Client for LiveKit RoomService API

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-room_service = lkapi.room
-
-
- -

Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/

-
- - -
- -
- - RoomService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) - - - -
- -
24    def __init__(
-25        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-26    ):
-27        super().__init__(session, url, api_key, api_secret)
-
- - - - -
-
- -
- - async def - create_room(self, create: room.CreateRoomRequest) -> models.Room: - - - -
- -
29    async def create_room(self, create: CreateRoomRequest) -> Room:
-30        return await self._client.request(
-31            SVC,
-32            "CreateRoom",
-33            create,
-34            self._auth_header(VideoGrants(room_create=True)),
-35            Room,
-36        )
-
- - - - -
-
- -
- - async def - list_rooms(self, list: room.ListRoomsRequest) -> room.ListRoomsResponse: - - - -
- -
38    async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse:
-39        return await self._client.request(
-40            SVC,
-41            "ListRooms",
-42            list,
-43            self._auth_header(VideoGrants(room_list=True)),
-44            ListRoomsResponse,
-45        )
-
- - - - -
-
- -
- - async def - delete_room(self, delete: room.DeleteRoomRequest) -> room.DeleteRoomResponse: - - - -
- -
47    async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse:
-48        return await self._client.request(
-49            SVC,
-50            "DeleteRoom",
-51            delete,
-52            self._auth_header(VideoGrants(room_create=True)),
-53            DeleteRoomResponse,
-54        )
-
- - - - -
-
- -
- - async def - update_room_metadata(self, update: room.UpdateRoomMetadataRequest) -> models.Room: - - - -
- -
56    async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room:
-57        return await self._client.request(
-58            SVC,
-59            "UpdateRoomMetadata",
-60            update,
-61            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-62            Room,
-63        )
-
- - - - -
-
- -
- - async def - list_participants( self, list: room.ListParticipantsRequest) -> room.ListParticipantsResponse: - - - -
- -
65    async def list_participants(
-66        self, list: ListParticipantsRequest
-67    ) -> ListParticipantsResponse:
-68        return await self._client.request(
-69            SVC,
-70            "ListParticipants",
-71            list,
-72            self._auth_header(VideoGrants(room_admin=True, room=list.room)),
-73            ListParticipantsResponse,
-74        )
-
- - - - -
-
- -
- - async def - get_participant(self, get: room.RoomParticipantIdentity) -> models.ParticipantInfo: - - - -
- -
76    async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo:
-77        return await self._client.request(
-78            SVC,
-79            "GetParticipant",
-80            get,
-81            self._auth_header(VideoGrants(room_admin=True, room=get.room)),
-82            ParticipantInfo,
-83        )
-
- - - - -
-
- -
- - async def - remove_participant( self, remove: room.RoomParticipantIdentity) -> room.RemoveParticipantResponse: - - - -
- -
85    async def remove_participant(
-86        self, remove: RoomParticipantIdentity
-87    ) -> RemoveParticipantResponse:
-88        return await self._client.request(
-89            SVC,
-90            "RemoveParticipant",
-91            remove,
-92            self._auth_header(VideoGrants(room_admin=True, room=remove.room)),
-93            RemoveParticipantResponse,
-94        )
-
- - - - -
-
- -
- - async def - mute_published_track(self, update: room.MuteRoomTrackRequest) -> room.MuteRoomTrackResponse: - - - -
- -
 96    async def mute_published_track(
- 97        self,
- 98        update: MuteRoomTrackRequest,
- 99    ) -> MuteRoomTrackResponse:
-100        return await self._client.request(
-101            SVC,
-102            "MutePublishedTrack",
-103            update,
-104            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-105            MuteRoomTrackResponse,
-106        )
-
- - - - -
-
- -
- - async def - update_participant(self, update: room.UpdateParticipantRequest) -> models.ParticipantInfo: - - - -
- -
108    async def update_participant(
-109        self, update: UpdateParticipantRequest
-110    ) -> ParticipantInfo:
-111        return await self._client.request(
-112            SVC,
-113            "UpdateParticipant",
-114            update,
-115            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-116            ParticipantInfo,
-117        )
-
- - - - -
-
- -
- - async def - update_subscriptions( self, update: room.UpdateSubscriptionsRequest) -> room.UpdateSubscriptionsResponse: - - - -
- -
119    async def update_subscriptions(
-120        self, update: UpdateSubscriptionsRequest
-121    ) -> UpdateSubscriptionsResponse:
-122        return await self._client.request(
-123            SVC,
-124            "UpdateSubscriptions",
-125            update,
-126            self._auth_header(VideoGrants(room_admin=True, room=update.room)),
-127            UpdateSubscriptionsResponse,
-128        )
-
- - - - -
-
- -
- - async def - send_data(self, send: room.SendDataRequest) -> room.SendDataResponse: - - - -
- -
130    async def send_data(self, send: SendDataRequest) -> SendDataResponse:
-131        return await self._client.request(
-132            SVC,
-133            "SendData",
-134            send,
-135            self._auth_header(VideoGrants(room_admin=True, room=send.room)),
-136            SendDataResponse,
-137        )
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/sip_service.html b/docs/livekit/api/sip_service.html deleted file mode 100644 index 3c27264e..00000000 --- a/docs/livekit/api/sip_service.html +++ /dev/null @@ -1,978 +0,0 @@ - - - - - - - livekit.api.sip_service API documentation - - - - - - - - - -
-
-

-livekit.api.sip_service

- - - - - - -
  1import aiohttp
-  2from livekit.protocol.sip import CreateSIPTrunkRequest, SIPTrunkInfo, CreateSIPInboundTrunkRequest, SIPInboundTrunkInfo, CreateSIPOutboundTrunkRequest, SIPOutboundTrunkInfo, ListSIPTrunkRequest, ListSIPTrunkResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, DeleteSIPTrunkRequest, SIPDispatchRuleInfo, CreateSIPDispatchRuleRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, DeleteSIPDispatchRuleRequest, CreateSIPParticipantRequest, TransferSIPParticipantRequest, SIPParticipantInfo
-  3from ._service import Service
-  4from .access_token import VideoGrants, SIPGrants
-  5
-  6SVC = "SIP"
-  7"""@private"""
-  8
-  9class SipService(Service):
- 10    """Client for LiveKit SIP Service API
- 11    
- 12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 13    
- 14    ```python
- 15    from livekit import api
- 16    lkapi = api.LiveKitAPI()
- 17    sip_service = lkapi.sip
- 18    ```
- 19    """
- 20    def __init__(
- 21        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 22    ):
- 23        super().__init__(session, url, api_key, api_secret)
- 24
- 25    async def create_sip_trunk(
- 26        self, create: CreateSIPTrunkRequest
- 27    ) -> SIPTrunkInfo:
- 28        return await self._client.request(
- 29            SVC,
- 30            "CreateSIPTrunk",
- 31            create,
- 32            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 33            SIPTrunkInfo,
- 34        )
- 35
- 36    async def create_sip_inbound_trunk(
- 37        self, create: CreateSIPInboundTrunkRequest
- 38    ) -> SIPInboundTrunkInfo:
- 39        return await self._client.request(
- 40            SVC,
- 41            "CreateSIPInboundTrunk",
- 42            create,
- 43            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 44            SIPInboundTrunkInfo,
- 45        )
- 46
- 47    async def create_sip_outbound_trunk(
- 48        self, create: CreateSIPOutboundTrunkRequest
- 49    ) -> SIPOutboundTrunkInfo:
- 50        return await self._client.request(
- 51            SVC,
- 52            "CreateSIPOutboundTrunk",
- 53            create,
- 54            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 55            SIPOutboundTrunkInfo,
- 56        )
- 57
- 58    async def list_sip_trunk(
- 59        self, list: ListSIPTrunkRequest
- 60    ) -> ListSIPTrunkResponse:
- 61        return await self._client.request(
- 62            SVC,
- 63            "ListSIPTrunk",
- 64            list,
- 65            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 66            ListSIPTrunkResponse,
- 67        )
- 68
- 69    async def list_sip_inbound_trunk(
- 70        self, list: ListSIPInboundTrunkRequest
- 71    ) -> ListSIPInboundTrunkResponse:
- 72        return await self._client.request(
- 73            SVC,
- 74            "ListSIPInboundTrunk",
- 75            list,
- 76            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 77            ListSIPInboundTrunkResponse,
- 78        )
- 79
- 80    async def list_sip_outbound_trunk(
- 81        self, list: ListSIPOutboundTrunkRequest
- 82    ) -> ListSIPOutboundTrunkResponse:
- 83        return await self._client.request(
- 84            SVC,
- 85            "ListSIPOutboundTrunk",
- 86            list,
- 87            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 88            ListSIPOutboundTrunkResponse,
- 89        )
- 90
- 91    async def delete_sip_trunk(
- 92        self, delete: DeleteSIPTrunkRequest
- 93    ) -> SIPTrunkInfo:
- 94        return await self._client.request(
- 95            SVC,
- 96            "DeleteSIPTrunk",
- 97            delete,
- 98            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 99            SIPTrunkInfo,
-100        )
-101
-102    async def create_sip_dispatch_rule(
-103        self, create: CreateSIPDispatchRuleRequest
-104    ) -> SIPDispatchRuleInfo:
-105        return await self._client.request(
-106            SVC,
-107            "CreateSIPDispatchRule",
-108            create,
-109            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-110            SIPDispatchRuleInfo,
-111        )
-112
-113    async def list_sip_dispatch_rule(
-114        self, list: ListSIPDispatchRuleRequest
-115    ) -> ListSIPDispatchRuleResponse:
-116        return await self._client.request(
-117            SVC,
-118            "ListSIPDispatchRule",
-119            list,
-120            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-121            ListSIPDispatchRuleResponse,
-122        )
-123
-124    async def delete_sip_dispatch_rule(
-125        self, delete: DeleteSIPDispatchRuleRequest
-126    ) -> SIPDispatchRuleInfo:
-127        return await self._client.request(
-128            SVC,
-129            "DeleteSIPDispatchRule",
-130            delete,
-131            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-132            SIPDispatchRuleInfo,
-133        )
-134
-135    async def create_sip_participant(
-136        self, create: CreateSIPParticipantRequest
-137    ) -> SIPParticipantInfo:
-138        return await self._client.request(
-139            SVC,
-140            "CreateSIPParticipant",
-141            create,
-142            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
-143            SIPParticipantInfo,
-144        )
-145
-146    async def transfer_sip_participant(
-147        self, transfer: TransferSIPParticipantRequest
-148    ) -> SIPParticipantInfo:
-149        return await self._client.request(
-150            SVC,
-151            "TransferSIPParticipant",
-152            transfer,
-153            self._auth_header(
-154                VideoGrants(
-155                    room_admin=True,
-156                    room=transfer.room_name,
-157                ),
-158                sip=SIPGrants(call=True),
-159            ),
-160            SIPParticipantInfo,
-161        )
-
- - -
-
- -
- - class - SipService(livekit.api._service.Service): - - - -
- -
 10class SipService(Service):
- 11    """Client for LiveKit SIP Service API
- 12    
- 13    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
- 14    
- 15    ```python
- 16    from livekit import api
- 17    lkapi = api.LiveKitAPI()
- 18    sip_service = lkapi.sip
- 19    ```
- 20    """
- 21    def __init__(
- 22        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
- 23    ):
- 24        super().__init__(session, url, api_key, api_secret)
- 25
- 26    async def create_sip_trunk(
- 27        self, create: CreateSIPTrunkRequest
- 28    ) -> SIPTrunkInfo:
- 29        return await self._client.request(
- 30            SVC,
- 31            "CreateSIPTrunk",
- 32            create,
- 33            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 34            SIPTrunkInfo,
- 35        )
- 36
- 37    async def create_sip_inbound_trunk(
- 38        self, create: CreateSIPInboundTrunkRequest
- 39    ) -> SIPInboundTrunkInfo:
- 40        return await self._client.request(
- 41            SVC,
- 42            "CreateSIPInboundTrunk",
- 43            create,
- 44            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 45            SIPInboundTrunkInfo,
- 46        )
- 47
- 48    async def create_sip_outbound_trunk(
- 49        self, create: CreateSIPOutboundTrunkRequest
- 50    ) -> SIPOutboundTrunkInfo:
- 51        return await self._client.request(
- 52            SVC,
- 53            "CreateSIPOutboundTrunk",
- 54            create,
- 55            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 56            SIPOutboundTrunkInfo,
- 57        )
- 58
- 59    async def list_sip_trunk(
- 60        self, list: ListSIPTrunkRequest
- 61    ) -> ListSIPTrunkResponse:
- 62        return await self._client.request(
- 63            SVC,
- 64            "ListSIPTrunk",
- 65            list,
- 66            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 67            ListSIPTrunkResponse,
- 68        )
- 69
- 70    async def list_sip_inbound_trunk(
- 71        self, list: ListSIPInboundTrunkRequest
- 72    ) -> ListSIPInboundTrunkResponse:
- 73        return await self._client.request(
- 74            SVC,
- 75            "ListSIPInboundTrunk",
- 76            list,
- 77            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 78            ListSIPInboundTrunkResponse,
- 79        )
- 80
- 81    async def list_sip_outbound_trunk(
- 82        self, list: ListSIPOutboundTrunkRequest
- 83    ) -> ListSIPOutboundTrunkResponse:
- 84        return await self._client.request(
- 85            SVC,
- 86            "ListSIPOutboundTrunk",
- 87            list,
- 88            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
- 89            ListSIPOutboundTrunkResponse,
- 90        )
- 91
- 92    async def delete_sip_trunk(
- 93        self, delete: DeleteSIPTrunkRequest
- 94    ) -> SIPTrunkInfo:
- 95        return await self._client.request(
- 96            SVC,
- 97            "DeleteSIPTrunk",
- 98            delete,
- 99            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-100            SIPTrunkInfo,
-101        )
-102
-103    async def create_sip_dispatch_rule(
-104        self, create: CreateSIPDispatchRuleRequest
-105    ) -> SIPDispatchRuleInfo:
-106        return await self._client.request(
-107            SVC,
-108            "CreateSIPDispatchRule",
-109            create,
-110            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-111            SIPDispatchRuleInfo,
-112        )
-113
-114    async def list_sip_dispatch_rule(
-115        self, list: ListSIPDispatchRuleRequest
-116    ) -> ListSIPDispatchRuleResponse:
-117        return await self._client.request(
-118            SVC,
-119            "ListSIPDispatchRule",
-120            list,
-121            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-122            ListSIPDispatchRuleResponse,
-123        )
-124
-125    async def delete_sip_dispatch_rule(
-126        self, delete: DeleteSIPDispatchRuleRequest
-127    ) -> SIPDispatchRuleInfo:
-128        return await self._client.request(
-129            SVC,
-130            "DeleteSIPDispatchRule",
-131            delete,
-132            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-133            SIPDispatchRuleInfo,
-134        )
-135
-136    async def create_sip_participant(
-137        self, create: CreateSIPParticipantRequest
-138    ) -> SIPParticipantInfo:
-139        return await self._client.request(
-140            SVC,
-141            "CreateSIPParticipant",
-142            create,
-143            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
-144            SIPParticipantInfo,
-145        )
-146
-147    async def transfer_sip_participant(
-148        self, transfer: TransferSIPParticipantRequest
-149    ) -> SIPParticipantInfo:
-150        return await self._client.request(
-151            SVC,
-152            "TransferSIPParticipant",
-153            transfer,
-154            self._auth_header(
-155                VideoGrants(
-156                    room_admin=True,
-157                    room=transfer.room_name,
-158                ),
-159                sip=SIPGrants(call=True),
-160            ),
-161            SIPParticipantInfo,
-162        )
-
- - -

Client for LiveKit SIP Service API

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-sip_service = lkapi.sip
-
-
-
- - -
- -
- - SipService( session: aiohttp.client.ClientSession, url: str, api_key: str, api_secret: str) - - - -
- -
21    def __init__(
-22        self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str
-23    ):
-24        super().__init__(session, url, api_key, api_secret)
-
- - - - -
-
- -
- - async def - create_sip_trunk(self, create: sip.CreateSIPTrunkRequest) -> sip.SIPTrunkInfo: - - - -
- -
26    async def create_sip_trunk(
-27        self, create: CreateSIPTrunkRequest
-28    ) -> SIPTrunkInfo:
-29        return await self._client.request(
-30            SVC,
-31            "CreateSIPTrunk",
-32            create,
-33            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-34            SIPTrunkInfo,
-35        )
-
- - - - -
-
- -
- - async def - create_sip_inbound_trunk( self, create: sip.CreateSIPInboundTrunkRequest) -> sip.SIPInboundTrunkInfo: - - - -
- -
37    async def create_sip_inbound_trunk(
-38        self, create: CreateSIPInboundTrunkRequest
-39    ) -> SIPInboundTrunkInfo:
-40        return await self._client.request(
-41            SVC,
-42            "CreateSIPInboundTrunk",
-43            create,
-44            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-45            SIPInboundTrunkInfo,
-46        )
-
- - - - -
-
- -
- - async def - create_sip_outbound_trunk( self, create: sip.CreateSIPOutboundTrunkRequest) -> sip.SIPOutboundTrunkInfo: - - - -
- -
48    async def create_sip_outbound_trunk(
-49        self, create: CreateSIPOutboundTrunkRequest
-50    ) -> SIPOutboundTrunkInfo:
-51        return await self._client.request(
-52            SVC,
-53            "CreateSIPOutboundTrunk",
-54            create,
-55            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-56            SIPOutboundTrunkInfo,
-57        )
-
- - - - -
-
- -
- - async def - list_sip_trunk(self, list: sip.ListSIPTrunkRequest) -> sip.ListSIPTrunkResponse: - - - -
- -
59    async def list_sip_trunk(
-60        self, list: ListSIPTrunkRequest
-61    ) -> ListSIPTrunkResponse:
-62        return await self._client.request(
-63            SVC,
-64            "ListSIPTrunk",
-65            list,
-66            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-67            ListSIPTrunkResponse,
-68        )
-
- - - - -
-
- -
- - async def - list_sip_inbound_trunk( self, list: sip.ListSIPInboundTrunkRequest) -> sip.ListSIPInboundTrunkResponse: - - - -
- -
70    async def list_sip_inbound_trunk(
-71        self, list: ListSIPInboundTrunkRequest
-72    ) -> ListSIPInboundTrunkResponse:
-73        return await self._client.request(
-74            SVC,
-75            "ListSIPInboundTrunk",
-76            list,
-77            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-78            ListSIPInboundTrunkResponse,
-79        )
-
- - - - -
-
- -
- - async def - list_sip_outbound_trunk( self, list: sip.ListSIPOutboundTrunkRequest) -> sip.ListSIPOutboundTrunkResponse: - - - -
- -
81    async def list_sip_outbound_trunk(
-82        self, list: ListSIPOutboundTrunkRequest
-83    ) -> ListSIPOutboundTrunkResponse:
-84        return await self._client.request(
-85            SVC,
-86            "ListSIPOutboundTrunk",
-87            list,
-88            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-89            ListSIPOutboundTrunkResponse,
-90        )
-
- - - - -
-
- -
- - async def - delete_sip_trunk(self, delete: sip.DeleteSIPTrunkRequest) -> sip.SIPTrunkInfo: - - - -
- -
 92    async def delete_sip_trunk(
- 93        self, delete: DeleteSIPTrunkRequest
- 94    ) -> SIPTrunkInfo:
- 95        return await self._client.request(
- 96            SVC,
- 97            "DeleteSIPTrunk",
- 98            delete,
- 99            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-100            SIPTrunkInfo,
-101        )
-
- - - - -
-
- -
- - async def - create_sip_dispatch_rule( self, create: sip.CreateSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo: - - - -
- -
103    async def create_sip_dispatch_rule(
-104        self, create: CreateSIPDispatchRuleRequest
-105    ) -> SIPDispatchRuleInfo:
-106        return await self._client.request(
-107            SVC,
-108            "CreateSIPDispatchRule",
-109            create,
-110            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-111            SIPDispatchRuleInfo,
-112        )
-
- - - - -
-
- -
- - async def - list_sip_dispatch_rule( self, list: sip.ListSIPDispatchRuleRequest) -> sip.ListSIPDispatchRuleResponse: - - - -
- -
114    async def list_sip_dispatch_rule(
-115        self, list: ListSIPDispatchRuleRequest
-116    ) -> ListSIPDispatchRuleResponse:
-117        return await self._client.request(
-118            SVC,
-119            "ListSIPDispatchRule",
-120            list,
-121            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-122            ListSIPDispatchRuleResponse,
-123        )
-
- - - - -
-
- -
- - async def - delete_sip_dispatch_rule( self, delete: sip.DeleteSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo: - - - -
- -
125    async def delete_sip_dispatch_rule(
-126        self, delete: DeleteSIPDispatchRuleRequest
-127    ) -> SIPDispatchRuleInfo:
-128        return await self._client.request(
-129            SVC,
-130            "DeleteSIPDispatchRule",
-131            delete,
-132            self._auth_header(VideoGrants(), sip=SIPGrants(admin=True)),
-133            SIPDispatchRuleInfo,
-134        )
-
- - - - -
-
- -
- - async def - create_sip_participant(self, create: sip.CreateSIPParticipantRequest) -> sip.SIPParticipantInfo: - - - -
- -
136    async def create_sip_participant(
-137        self, create: CreateSIPParticipantRequest
-138    ) -> SIPParticipantInfo:
-139        return await self._client.request(
-140            SVC,
-141            "CreateSIPParticipant",
-142            create,
-143            self._auth_header(VideoGrants(), sip=SIPGrants(call=True)),
-144            SIPParticipantInfo,
-145        )
-
- - - - -
-
- -
- - async def - transfer_sip_participant( self, transfer: sip.TransferSIPParticipantRequest) -> sip.SIPParticipantInfo: - - - -
- -
147    async def transfer_sip_participant(
-148        self, transfer: TransferSIPParticipantRequest
-149    ) -> SIPParticipantInfo:
-150        return await self._client.request(
-151            SVC,
-152            "TransferSIPParticipant",
-153            transfer,
-154            self._auth_header(
-155                VideoGrants(
-156                    room_admin=True,
-157                    room=transfer.room_name,
-158                ),
-159                sip=SIPGrants(call=True),
-160            ),
-161            SIPParticipantInfo,
-162        )
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/twirp_client.html b/docs/livekit/api/twirp_client.html deleted file mode 100644 index 2d2670aa..00000000 --- a/docs/livekit/api/twirp_client.html +++ /dev/null @@ -1,952 +0,0 @@ - - - - - - - livekit.api.twirp_client API documentation - - - - - - - - - -
-
-

-livekit.api.twirp_client

- - - - - - -
  1# Copyright 2023 LiveKit, Inc.
-  2#
-  3# Licensed under the Apache License, Version 2.0 (the "License");
-  4# you may not use this file except in compliance with the License.
-  5# You may obtain a copy of the License at
-  6#
-  7#     http://www.apache.org/licenses/LICENSE-2.0
-  8#
-  9# Unless required by applicable law or agreed to in writing, software
- 10# distributed under the License is distributed on an "AS IS" BASIS,
- 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- 12# See the License for the specific language governing permissions and
- 13# limitations under the License.
- 14
- 15from typing import Dict, Type, TypeVar
- 16
- 17import aiohttp
- 18from google.protobuf.message import Message
- 19from urllib.parse import urlparse
- 20
- 21DEFAULT_PREFIX = "twirp"
- 22
- 23
- 24class TwirpError(Exception):
- 25    def __init__(self, code: str, msg: str) -> None:
- 26        self._code = code
- 27        self._msg = msg
- 28
- 29    @property
- 30    def code(self) -> str:
- 31        return self._code
- 32
- 33    @property
- 34    def message(self) -> str:
- 35        return self._msg
- 36
- 37
- 38class TwirpErrorCode:
- 39    CANCELED = "canceled"
- 40    UNKNOWN = "unknown"
- 41    INVALID_ARGUMENT = "invalid_argument"
- 42    MALFORMED = "malformed"
- 43    DEADLINE_EXCEEDED = "deadline_exceeded"
- 44    NOT_FOUND = "not_found"
- 45    BAD_ROUTE = "bad_route"
- 46    ALREADY_EXISTS = "already_exists"
- 47    PERMISSION_DENIED = "permission_denied"
- 48    UNAUTHENTICATED = "unauthenticated"
- 49    RESOURCE_EXHAUSTED = "resource_exhausted"
- 50    FAILED_PRECONDITION = "failed_precondition"
- 51    ABORTED = "aborted"
- 52    OUT_OF_RANGE = "out_of_range"
- 53    UNIMPLEMENTED = "unimplemented"
- 54    INTERNAL = "internal"
- 55    UNAVAILABLE = "unavailable"
- 56    DATA_LOSS = "dataloss"
- 57
- 58
- 59T = TypeVar("T", bound=Message)
- 60
- 61
- 62class TwirpClient:
- 63    def __init__(
- 64        self,
- 65        session: aiohttp.ClientSession,
- 66        host: str,
- 67        pkg: str,
- 68        prefix: str = DEFAULT_PREFIX,
- 69    ) -> None:
- 70        parse_res = urlparse(host)
- 71        scheme = parse_res.scheme
- 72        if scheme.startswith("ws"):
- 73            scheme = scheme.replace("ws", "http")
- 74
- 75        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
- 76        self.host = host.rstrip("/")
- 77        self.pkg = pkg
- 78        self.prefix = prefix
- 79        self._session = session
- 80
- 81    async def request(
- 82        self,
- 83        service: str,
- 84        method: str,
- 85        data: Message,
- 86        headers: Dict[str, str],
- 87        response_class: Type[T],
- 88    ) -> T:
- 89        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
- 90        headers["Content-Type"] = "application/protobuf"
- 91
- 92        serialized_data = data.SerializeToString()
- 93        async with self._session.post(
- 94            url, headers=headers, data=serialized_data
- 95        ) as resp:
- 96            if resp.status == 200:
- 97                return response_class.FromString(await resp.read())
- 98            else:
- 99                # when we have an error, Twirp always encode it in json
-100                error_data = await resp.json()
-101                raise TwirpError(error_data["code"], error_data["msg"])
-
- - -
-
-
- DEFAULT_PREFIX = -'twirp' - - -
- - - - -
-
- -
- - class - TwirpError(builtins.Exception): - - - -
- -
25class TwirpError(Exception):
-26    def __init__(self, code: str, msg: str) -> None:
-27        self._code = code
-28        self._msg = msg
-29
-30    @property
-31    def code(self) -> str:
-32        return self._code
-33
-34    @property
-35    def message(self) -> str:
-36        return self._msg
-
- - -

Common base class for all non-exit exceptions.

-
- - -
- -
- - TwirpError(code: str, msg: str) - - - -
- -
26    def __init__(self, code: str, msg: str) -> None:
-27        self._code = code
-28        self._msg = msg
-
- - - - -
-
- -
- code: str - - - -
- -
30    @property
-31    def code(self) -> str:
-32        return self._code
-
- - - - -
-
- -
- message: str - - - -
- -
34    @property
-35    def message(self) -> str:
-36        return self._msg
-
- - - - -
-
-
- -
- - class - TwirpErrorCode: - - - -
- -
39class TwirpErrorCode:
-40    CANCELED = "canceled"
-41    UNKNOWN = "unknown"
-42    INVALID_ARGUMENT = "invalid_argument"
-43    MALFORMED = "malformed"
-44    DEADLINE_EXCEEDED = "deadline_exceeded"
-45    NOT_FOUND = "not_found"
-46    BAD_ROUTE = "bad_route"
-47    ALREADY_EXISTS = "already_exists"
-48    PERMISSION_DENIED = "permission_denied"
-49    UNAUTHENTICATED = "unauthenticated"
-50    RESOURCE_EXHAUSTED = "resource_exhausted"
-51    FAILED_PRECONDITION = "failed_precondition"
-52    ABORTED = "aborted"
-53    OUT_OF_RANGE = "out_of_range"
-54    UNIMPLEMENTED = "unimplemented"
-55    INTERNAL = "internal"
-56    UNAVAILABLE = "unavailable"
-57    DATA_LOSS = "dataloss"
-
- - - - -
-
- CANCELED = -'canceled' - - -
- - - - -
-
-
- UNKNOWN = -'unknown' - - -
- - - - -
-
-
- INVALID_ARGUMENT = -'invalid_argument' - - -
- - - - -
-
-
- MALFORMED = -'malformed' - - -
- - - - -
-
-
- DEADLINE_EXCEEDED = -'deadline_exceeded' - - -
- - - - -
-
-
- NOT_FOUND = -'not_found' - - -
- - - - -
-
-
- BAD_ROUTE = -'bad_route' - - -
- - - - -
-
-
- ALREADY_EXISTS = -'already_exists' - - -
- - - - -
-
-
- PERMISSION_DENIED = -'permission_denied' - - -
- - - - -
-
-
- UNAUTHENTICATED = -'unauthenticated' - - -
- - - - -
-
-
- RESOURCE_EXHAUSTED = -'resource_exhausted' - - -
- - - - -
-
-
- FAILED_PRECONDITION = -'failed_precondition' - - -
- - - - -
-
-
- ABORTED = -'aborted' - - -
- - - - -
-
-
- OUT_OF_RANGE = -'out_of_range' - - -
- - - - -
-
-
- UNIMPLEMENTED = -'unimplemented' - - -
- - - - -
-
-
- INTERNAL = -'internal' - - -
- - - - -
-
-
- UNAVAILABLE = -'unavailable' - - -
- - - - -
-
-
- DATA_LOSS = -'dataloss' - - -
- - - - -
-
-
- -
- - class - TwirpClient: - - - -
- -
 63class TwirpClient:
- 64    def __init__(
- 65        self,
- 66        session: aiohttp.ClientSession,
- 67        host: str,
- 68        pkg: str,
- 69        prefix: str = DEFAULT_PREFIX,
- 70    ) -> None:
- 71        parse_res = urlparse(host)
- 72        scheme = parse_res.scheme
- 73        if scheme.startswith("ws"):
- 74            scheme = scheme.replace("ws", "http")
- 75
- 76        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
- 77        self.host = host.rstrip("/")
- 78        self.pkg = pkg
- 79        self.prefix = prefix
- 80        self._session = session
- 81
- 82    async def request(
- 83        self,
- 84        service: str,
- 85        method: str,
- 86        data: Message,
- 87        headers: Dict[str, str],
- 88        response_class: Type[T],
- 89    ) -> T:
- 90        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
- 91        headers["Content-Type"] = "application/protobuf"
- 92
- 93        serialized_data = data.SerializeToString()
- 94        async with self._session.post(
- 95            url, headers=headers, data=serialized_data
- 96        ) as resp:
- 97            if resp.status == 200:
- 98                return response_class.FromString(await resp.read())
- 99            else:
-100                # when we have an error, Twirp always encode it in json
-101                error_data = await resp.json()
-102                raise TwirpError(error_data["code"], error_data["msg"])
-
- - - - -
- -
- - TwirpClient( session: aiohttp.client.ClientSession, host: str, pkg: str, prefix: str = 'twirp') - - - -
- -
64    def __init__(
-65        self,
-66        session: aiohttp.ClientSession,
-67        host: str,
-68        pkg: str,
-69        prefix: str = DEFAULT_PREFIX,
-70    ) -> None:
-71        parse_res = urlparse(host)
-72        scheme = parse_res.scheme
-73        if scheme.startswith("ws"):
-74            scheme = scheme.replace("ws", "http")
-75
-76        host = f"{scheme}://{parse_res.netloc}/{parse_res.path}"
-77        self.host = host.rstrip("/")
-78        self.pkg = pkg
-79        self.prefix = prefix
-80        self._session = session
-
- - - - -
-
-
- host - - -
- - - - -
-
-
- pkg - - -
- - - - -
-
-
- prefix - - -
- - - - -
-
- -
- - async def - request( self, service: str, method: str, data: google.protobuf.message.Message, headers: Dict[str, str], response_class: Type[~T]) -> ~T: - - - -
- -
 82    async def request(
- 83        self,
- 84        service: str,
- 85        method: str,
- 86        data: Message,
- 87        headers: Dict[str, str],
- 88        response_class: Type[T],
- 89    ) -> T:
- 90        url = f"{self.host}/{self.prefix}/{self.pkg}.{service}/{method}"
- 91        headers["Content-Type"] = "application/protobuf"
- 92
- 93        serialized_data = data.SerializeToString()
- 94        async with self._session.post(
- 95            url, headers=headers, data=serialized_data
- 96        ) as resp:
- 97            if resp.status == 200:
- 98                return response_class.FromString(await resp.read())
- 99            else:
-100                # when we have an error, Twirp always encode it in json
-101                error_data = await resp.json()
-102                raise TwirpError(error_data["code"], error_data["msg"])
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/livekit/api/version.html b/docs/livekit/api/version.html deleted file mode 100644 index 6dc0e3ed..00000000 --- a/docs/livekit/api/version.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - livekit.api.version API documentation - - - - - - - - - -
-
-

-livekit.api.version

- - - - - - -
1__version__ = "0.8.0"
-
- - -
-
- - \ No newline at end of file diff --git a/docs/livekit/api/webhook.html b/docs/livekit/api/webhook.html deleted file mode 100644 index 77d57415..00000000 --- a/docs/livekit/api/webhook.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - livekit.api.webhook API documentation - - - - - - - - - -
-
-

-livekit.api.webhook

- - - - - - -
 1from .access_token import TokenVerifier
- 2from livekit.protocol.webhook import WebhookEvent
- 3from google.protobuf.json_format import Parse
- 4import hashlib
- 5import base64
- 6
- 7
- 8class WebhookReceiver:
- 9    """Receive webhooks from LiveKit.
-10    
-11    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
-12    
-13    ```python
-14    from livekit import api
-15    lkapi = api.LiveKitAPI()
-16    webhook = lkapi.webhook
-17    ```
-18    
-19    Also see https://docs.livekit.io/home/server/webhooks/
-20    """
-21    def __init__(self, token_verifier: TokenVerifier):
-22        self._verifier = token_verifier
-23
-24    def receive(self, body: str, auth_token: str) -> WebhookEvent:
-25        claims = self._verifier.verify(auth_token)
-26        if claims.sha256 is None:
-27            raise Exception("sha256 was not found in the token")
-28
-29        body_hash = hashlib.sha256(body.encode()).digest()
-30        claims_hash = base64.b64decode(claims.sha256)
-31
-32        if body_hash != claims_hash:
-33            raise Exception("hash mismatch")
-34
-35        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
-
- - -
-
- -
- - class - WebhookReceiver: - - - -
- -
 9class WebhookReceiver:
-10    """Receive webhooks from LiveKit.
-11    
-12    Recommended way to use this service is via `livekit.api.LiveKitAPI`:
-13    
-14    ```python
-15    from livekit import api
-16    lkapi = api.LiveKitAPI()
-17    webhook = lkapi.webhook
-18    ```
-19    
-20    Also see https://docs.livekit.io/home/server/webhooks/
-21    """
-22    def __init__(self, token_verifier: TokenVerifier):
-23        self._verifier = token_verifier
-24
-25    def receive(self, body: str, auth_token: str) -> WebhookEvent:
-26        claims = self._verifier.verify(auth_token)
-27        if claims.sha256 is None:
-28            raise Exception("sha256 was not found in the token")
-29
-30        body_hash = hashlib.sha256(body.encode()).digest()
-31        claims_hash = base64.b64decode(claims.sha256)
-32
-33        if body_hash != claims_hash:
-34            raise Exception("hash mismatch")
-35
-36        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
-
- - -

Receive webhooks from LiveKit.

- -

Recommended way to use this service is via livekit.api.LiveKitAPI:

- -
-
from livekit import api
-lkapi = api.LiveKitAPI()
-webhook = lkapi.webhook
-
-
- -

Also see https://docs.livekit.io/home/server/webhooks/

-
- - -
- -
- - WebhookReceiver(token_verifier: livekit.api.access_token.TokenVerifier) - - - -
- -
22    def __init__(self, token_verifier: TokenVerifier):
-23        self._verifier = token_verifier
-
- - - - -
-
- -
- - def - receive(self, body: str, auth_token: str) -> webhook.WebhookEvent: - - - -
- -
25    def receive(self, body: str, auth_token: str) -> WebhookEvent:
-26        claims = self._verifier.verify(auth_token)
-27        if claims.sha256 is None:
-28            raise Exception("sha256 was not found in the token")
-29
-30        body_hash = hashlib.sha256(body.encode()).digest()
-31        claims_hash = base64.b64decode(claims.sha256)
-32
-33        if body_hash != claims_hash:
-34            raise Exception("hash mismatch")
-35
-36        return Parse(body, WebhookEvent(), ignore_unknown_fields=True)
-
- - - - -
-
-
- - \ No newline at end of file diff --git a/docs/search.js b/docs/search.js deleted file mode 100644 index 0259cd0b..00000000 --- a/docs/search.js +++ /dev/null @@ -1,46 +0,0 @@ -window.pdocSearch = (function(){ -/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oLiveKit Server APIs for Python

\n\n

Manage rooms, participants, egress, ingress, SIP, and Agent dispatch.

\n\n

Primary entry point is LiveKitAPI.

\n\n

See https://docs.livekit.io/reference/server/server-apis for more information.

\n"}, "livekit.api.LiveKitAPI": {"fullname": "livekit.api.LiveKitAPI", "modulename": "livekit.api", "qualname": "LiveKitAPI", "kind": "class", "doc": "

LiveKit Server API Client

\n\n

This class is the main entrypoint, which exposes all services.

\n\n

Usage:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nrooms = await lkapi.room.list_rooms(api.proto_room.ListRoomsRequest(names=['test-room']))\n
\n
\n"}, "livekit.api.LiveKitAPI.__init__": {"fullname": "livekit.api.LiveKitAPI.__init__", "modulename": "livekit.api", "qualname": "LiveKitAPI.__init__", "kind": "function", "doc": "

Create a new LiveKitAPI instance.

\n\n
Arguments:
\n\n
    \n
  • url: LiveKit server URL (read from LIVEKIT_URL environment variable if not provided)
  • \n
  • api_key: API key (read from LIVEKIT_API_KEY environment variable if not provided)
  • \n
  • api_secret: API secret (read from LIVEKIT_API_SECRET environment variable if not provided)
  • \n
  • timeout: Request timeout (default: 60 seconds)
  • \n
\n", "signature": "(\turl: Optional[str] = None,\tapi_key: Optional[str] = None,\tapi_secret: Optional[str] = None,\t*,\ttimeout: aiohttp.client.ClientTimeout = ClientTimeout(total=60, connect=None, sock_read=None, sock_connect=None, ceil_threshold=5))"}, "livekit.api.LiveKitAPI.agent_dispatch": {"fullname": "livekit.api.LiveKitAPI.agent_dispatch", "modulename": "livekit.api", "qualname": "LiveKitAPI.agent_dispatch", "kind": "variable", "doc": "

Instance of the AgentDispatchService

\n\n

See livekit.api.agent_dispatch_service.AgentDispatchService

\n", "annotation": ": livekit.api.agent_dispatch_service.AgentDispatchService"}, "livekit.api.LiveKitAPI.room": {"fullname": "livekit.api.LiveKitAPI.room", "modulename": "livekit.api", "qualname": "LiveKitAPI.room", "kind": "variable", "doc": "

Instance of the RoomService

\n\n

See livekit.api.room_service.RoomService

\n", "annotation": ": livekit.api.room_service.RoomService"}, "livekit.api.LiveKitAPI.ingress": {"fullname": "livekit.api.LiveKitAPI.ingress", "modulename": "livekit.api", "qualname": "LiveKitAPI.ingress", "kind": "variable", "doc": "

Instance of the IngressService

\n\n

See livekit.api.ingress_service.IngressService

\n", "annotation": ": livekit.api.ingress_service.IngressService"}, "livekit.api.LiveKitAPI.egress": {"fullname": "livekit.api.LiveKitAPI.egress", "modulename": "livekit.api", "qualname": "LiveKitAPI.egress", "kind": "variable", "doc": "

Instance of the EgressService

\n\n

See livekit.api.egress_service.EgressService

\n", "annotation": ": livekit.api.egress_service.EgressService"}, "livekit.api.LiveKitAPI.sip": {"fullname": "livekit.api.LiveKitAPI.sip", "modulename": "livekit.api", "qualname": "LiveKitAPI.sip", "kind": "variable", "doc": "

Instance of the SipService

\n\n

See livekit.api.sip_service.SipService

\n", "annotation": ": livekit.api.sip_service.SipService"}, "livekit.api.VideoGrants": {"fullname": "livekit.api.VideoGrants", "modulename": "livekit.api", "qualname": "VideoGrants", "kind": "class", "doc": "

\n"}, "livekit.api.VideoGrants.__init__": {"fullname": "livekit.api.VideoGrants.__init__", "modulename": "livekit.api", "qualname": "VideoGrants.__init__", "kind": "function", "doc": "

\n", "signature": "(\troom_create: Optional[bool] = None,\troom_list: Optional[bool] = None,\troom_record: Optional[bool] = None,\troom_admin: Optional[bool] = None,\troom_join: Optional[bool] = None,\troom: str = '',\tcan_publish: bool = True,\tcan_subscribe: bool = True,\tcan_publish_data: bool = True,\tcan_publish_sources: Optional[List[str]] = None,\tcan_update_own_metadata: Optional[bool] = None,\tingress_admin: Optional[bool] = None,\thidden: Optional[bool] = None,\trecorder: Optional[bool] = None,\tagent: Optional[bool] = None)"}, "livekit.api.VideoGrants.room_create": {"fullname": "livekit.api.VideoGrants.room_create", "modulename": "livekit.api", "qualname": "VideoGrants.room_create", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_list": {"fullname": "livekit.api.VideoGrants.room_list", "modulename": "livekit.api", "qualname": "VideoGrants.room_list", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_record": {"fullname": "livekit.api.VideoGrants.room_record", "modulename": "livekit.api", "qualname": "VideoGrants.room_record", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_admin": {"fullname": "livekit.api.VideoGrants.room_admin", "modulename": "livekit.api", "qualname": "VideoGrants.room_admin", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room_join": {"fullname": "livekit.api.VideoGrants.room_join", "modulename": "livekit.api", "qualname": "VideoGrants.room_join", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.room": {"fullname": "livekit.api.VideoGrants.room", "modulename": "livekit.api", "qualname": "VideoGrants.room", "kind": "variable", "doc": "

\n", "annotation": ": str", "default_value": "''"}, "livekit.api.VideoGrants.can_publish": {"fullname": "livekit.api.VideoGrants.can_publish", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_subscribe": {"fullname": "livekit.api.VideoGrants.can_subscribe", "modulename": "livekit.api", "qualname": "VideoGrants.can_subscribe", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_publish_data": {"fullname": "livekit.api.VideoGrants.can_publish_data", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish_data", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "True"}, "livekit.api.VideoGrants.can_publish_sources": {"fullname": "livekit.api.VideoGrants.can_publish_sources", "modulename": "livekit.api", "qualname": "VideoGrants.can_publish_sources", "kind": "variable", "doc": "

\n", "annotation": ": Optional[List[str]]", "default_value": "None"}, "livekit.api.VideoGrants.can_update_own_metadata": {"fullname": "livekit.api.VideoGrants.can_update_own_metadata", "modulename": "livekit.api", "qualname": "VideoGrants.can_update_own_metadata", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.ingress_admin": {"fullname": "livekit.api.VideoGrants.ingress_admin", "modulename": "livekit.api", "qualname": "VideoGrants.ingress_admin", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.hidden": {"fullname": "livekit.api.VideoGrants.hidden", "modulename": "livekit.api", "qualname": "VideoGrants.hidden", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.recorder": {"fullname": "livekit.api.VideoGrants.recorder", "modulename": "livekit.api", "qualname": "VideoGrants.recorder", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.VideoGrants.agent": {"fullname": "livekit.api.VideoGrants.agent", "modulename": "livekit.api", "qualname": "VideoGrants.agent", "kind": "variable", "doc": "

\n", "annotation": ": Optional[bool]", "default_value": "None"}, "livekit.api.SIPGrants": {"fullname": "livekit.api.SIPGrants", "modulename": "livekit.api", "qualname": "SIPGrants", "kind": "class", "doc": "

\n"}, "livekit.api.SIPGrants.__init__": {"fullname": "livekit.api.SIPGrants.__init__", "modulename": "livekit.api", "qualname": "SIPGrants.__init__", "kind": "function", "doc": "

\n", "signature": "(admin: bool = False, call: bool = False)"}, "livekit.api.SIPGrants.admin": {"fullname": "livekit.api.SIPGrants.admin", "modulename": "livekit.api", "qualname": "SIPGrants.admin", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "False"}, "livekit.api.SIPGrants.call": {"fullname": "livekit.api.SIPGrants.call", "modulename": "livekit.api", "qualname": "SIPGrants.call", "kind": "variable", "doc": "

\n", "annotation": ": bool", "default_value": "False"}, "livekit.api.AccessToken": {"fullname": "livekit.api.AccessToken", "modulename": "livekit.api", "qualname": "AccessToken", "kind": "class", "doc": "

\n"}, "livekit.api.AccessToken.__init__": {"fullname": "livekit.api.AccessToken.__init__", "modulename": "livekit.api", "qualname": "AccessToken.__init__", "kind": "function", "doc": "

\n", "signature": "(api_key: Optional[str] = None, api_secret: Optional[str] = None)"}, "livekit.api.AccessToken.ParticipantKind": {"fullname": "livekit.api.AccessToken.ParticipantKind", "modulename": "livekit.api", "qualname": "AccessToken.ParticipantKind", "kind": "variable", "doc": "

\n", "default_value": "typing.Literal['standard', 'egress', 'ingress', 'sip', 'agent']"}, "livekit.api.AccessToken.api_key": {"fullname": "livekit.api.AccessToken.api_key", "modulename": "livekit.api", "qualname": "AccessToken.api_key", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.api_secret": {"fullname": "livekit.api.AccessToken.api_secret", "modulename": "livekit.api", "qualname": "AccessToken.api_secret", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.claims": {"fullname": "livekit.api.AccessToken.claims", "modulename": "livekit.api", "qualname": "AccessToken.claims", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.identity": {"fullname": "livekit.api.AccessToken.identity", "modulename": "livekit.api", "qualname": "AccessToken.identity", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.ttl": {"fullname": "livekit.api.AccessToken.ttl", "modulename": "livekit.api", "qualname": "AccessToken.ttl", "kind": "variable", "doc": "

\n"}, "livekit.api.AccessToken.with_ttl": {"fullname": "livekit.api.AccessToken.with_ttl", "modulename": "livekit.api", "qualname": "AccessToken.with_ttl", "kind": "function", "doc": "

\n", "signature": "(self, ttl: datetime.timedelta) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_grants": {"fullname": "livekit.api.AccessToken.with_grants", "modulename": "livekit.api", "qualname": "AccessToken.with_grants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tgrants: livekit.api.access_token.VideoGrants) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_sip_grants": {"fullname": "livekit.api.AccessToken.with_sip_grants", "modulename": "livekit.api", "qualname": "AccessToken.with_sip_grants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tgrants: livekit.api.access_token.SIPGrants) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_identity": {"fullname": "livekit.api.AccessToken.with_identity", "modulename": "livekit.api", "qualname": "AccessToken.with_identity", "kind": "function", "doc": "

\n", "signature": "(self, identity: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_kind": {"fullname": "livekit.api.AccessToken.with_kind", "modulename": "livekit.api", "qualname": "AccessToken.with_kind", "kind": "function", "doc": "

\n", "signature": "(\tself,\tkind: Literal['standard', 'egress', 'ingress', 'sip', 'agent']) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_name": {"fullname": "livekit.api.AccessToken.with_name", "modulename": "livekit.api", "qualname": "AccessToken.with_name", "kind": "function", "doc": "

\n", "signature": "(self, name: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_metadata": {"fullname": "livekit.api.AccessToken.with_metadata", "modulename": "livekit.api", "qualname": "AccessToken.with_metadata", "kind": "function", "doc": "

\n", "signature": "(self, metadata: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_attributes": {"fullname": "livekit.api.AccessToken.with_attributes", "modulename": "livekit.api", "qualname": "AccessToken.with_attributes", "kind": "function", "doc": "

\n", "signature": "(self, attributes: dict[str, str]) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_sha256": {"fullname": "livekit.api.AccessToken.with_sha256", "modulename": "livekit.api", "qualname": "AccessToken.with_sha256", "kind": "function", "doc": "

\n", "signature": "(self, sha256: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_room_preset": {"fullname": "livekit.api.AccessToken.with_room_preset", "modulename": "livekit.api", "qualname": "AccessToken.with_room_preset", "kind": "function", "doc": "

\n", "signature": "(self, preset: str) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.with_room_config": {"fullname": "livekit.api.AccessToken.with_room_config", "modulename": "livekit.api", "qualname": "AccessToken.with_room_config", "kind": "function", "doc": "

\n", "signature": "(\tself,\tconfig: room.RoomConfiguration) -> livekit.api.access_token.AccessToken:", "funcdef": "def"}, "livekit.api.AccessToken.to_jwt": {"fullname": "livekit.api.AccessToken.to_jwt", "modulename": "livekit.api", "qualname": "AccessToken.to_jwt", "kind": "function", "doc": "

\n", "signature": "(self) -> str:", "funcdef": "def"}, "livekit.api.TokenVerifier": {"fullname": "livekit.api.TokenVerifier", "modulename": "livekit.api", "qualname": "TokenVerifier", "kind": "class", "doc": "

\n"}, "livekit.api.TokenVerifier.__init__": {"fullname": "livekit.api.TokenVerifier.__init__", "modulename": "livekit.api", "qualname": "TokenVerifier.__init__", "kind": "function", "doc": "

\n", "signature": "(\tapi_key: Optional[str] = None,\tapi_secret: Optional[str] = None,\t*,\tleeway: datetime.timedelta = datetime.timedelta(seconds=60))"}, "livekit.api.TokenVerifier.api_key": {"fullname": "livekit.api.TokenVerifier.api_key", "modulename": "livekit.api", "qualname": "TokenVerifier.api_key", "kind": "variable", "doc": "

\n"}, "livekit.api.TokenVerifier.api_secret": {"fullname": "livekit.api.TokenVerifier.api_secret", "modulename": "livekit.api", "qualname": "TokenVerifier.api_secret", "kind": "variable", "doc": "

\n"}, "livekit.api.TokenVerifier.verify": {"fullname": "livekit.api.TokenVerifier.verify", "modulename": "livekit.api", "qualname": "TokenVerifier.verify", "kind": "function", "doc": "

\n", "signature": "(self, token: str) -> livekit.api.access_token.Claims:", "funcdef": "def"}, "livekit.api.WebhookReceiver": {"fullname": "livekit.api.WebhookReceiver", "modulename": "livekit.api", "qualname": "WebhookReceiver", "kind": "class", "doc": "

\n"}, "livekit.api.WebhookReceiver.__init__": {"fullname": "livekit.api.WebhookReceiver.__init__", "modulename": "livekit.api", "qualname": "WebhookReceiver.__init__", "kind": "function", "doc": "

\n", "signature": "(token_verifier: livekit.api.access_token.TokenVerifier)"}, "livekit.api.WebhookReceiver.receive": {"fullname": "livekit.api.WebhookReceiver.receive", "modulename": "livekit.api", "qualname": "WebhookReceiver.receive", "kind": "function", "doc": "

\n", "signature": "(self, body: str, auth_token: str) -> webhook.WebhookEvent:", "funcdef": "def"}, "livekit.api.TwirpError": {"fullname": "livekit.api.TwirpError", "modulename": "livekit.api", "qualname": "TwirpError", "kind": "class", "doc": "

Common base class for all non-exit exceptions.

\n", "bases": "builtins.Exception"}, "livekit.api.TwirpError.__init__": {"fullname": "livekit.api.TwirpError.__init__", "modulename": "livekit.api", "qualname": "TwirpError.__init__", "kind": "function", "doc": "

\n", "signature": "(code: str, msg: str)"}, "livekit.api.TwirpError.code": {"fullname": "livekit.api.TwirpError.code", "modulename": "livekit.api", "qualname": "TwirpError.code", "kind": "variable", "doc": "

\n", "annotation": ": str"}, "livekit.api.TwirpError.message": {"fullname": "livekit.api.TwirpError.message", "modulename": "livekit.api", "qualname": "TwirpError.message", "kind": "variable", "doc": "

\n", "annotation": ": str"}, "livekit.api.TwirpErrorCode": {"fullname": "livekit.api.TwirpErrorCode", "modulename": "livekit.api", "qualname": "TwirpErrorCode", "kind": "class", "doc": "

\n"}, "livekit.api.TwirpErrorCode.CANCELED": {"fullname": "livekit.api.TwirpErrorCode.CANCELED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.CANCELED", "kind": "variable", "doc": "

\n", "default_value": "'canceled'"}, "livekit.api.TwirpErrorCode.UNKNOWN": {"fullname": "livekit.api.TwirpErrorCode.UNKNOWN", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNKNOWN", "kind": "variable", "doc": "

\n", "default_value": "'unknown'"}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"fullname": "livekit.api.TwirpErrorCode.INVALID_ARGUMENT", "modulename": "livekit.api", "qualname": "TwirpErrorCode.INVALID_ARGUMENT", "kind": "variable", "doc": "

\n", "default_value": "'invalid_argument'"}, "livekit.api.TwirpErrorCode.MALFORMED": {"fullname": "livekit.api.TwirpErrorCode.MALFORMED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.MALFORMED", "kind": "variable", "doc": "

\n", "default_value": "'malformed'"}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"fullname": "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.DEADLINE_EXCEEDED", "kind": "variable", "doc": "

\n", "default_value": "'deadline_exceeded'"}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"fullname": "livekit.api.TwirpErrorCode.NOT_FOUND", "modulename": "livekit.api", "qualname": "TwirpErrorCode.NOT_FOUND", "kind": "variable", "doc": "

\n", "default_value": "'not_found'"}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"fullname": "livekit.api.TwirpErrorCode.BAD_ROUTE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.BAD_ROUTE", "kind": "variable", "doc": "

\n", "default_value": "'bad_route'"}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"fullname": "livekit.api.TwirpErrorCode.ALREADY_EXISTS", "modulename": "livekit.api", "qualname": "TwirpErrorCode.ALREADY_EXISTS", "kind": "variable", "doc": "

\n", "default_value": "'already_exists'"}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"fullname": "livekit.api.TwirpErrorCode.PERMISSION_DENIED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.PERMISSION_DENIED", "kind": "variable", "doc": "

\n", "default_value": "'permission_denied'"}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"fullname": "livekit.api.TwirpErrorCode.UNAUTHENTICATED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNAUTHENTICATED", "kind": "variable", "doc": "

\n", "default_value": "'unauthenticated'"}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"fullname": "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.RESOURCE_EXHAUSTED", "kind": "variable", "doc": "

\n", "default_value": "'resource_exhausted'"}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"fullname": "livekit.api.TwirpErrorCode.FAILED_PRECONDITION", "modulename": "livekit.api", "qualname": "TwirpErrorCode.FAILED_PRECONDITION", "kind": "variable", "doc": "

\n", "default_value": "'failed_precondition'"}, "livekit.api.TwirpErrorCode.ABORTED": {"fullname": "livekit.api.TwirpErrorCode.ABORTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.ABORTED", "kind": "variable", "doc": "

\n", "default_value": "'aborted'"}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"fullname": "livekit.api.TwirpErrorCode.OUT_OF_RANGE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.OUT_OF_RANGE", "kind": "variable", "doc": "

\n", "default_value": "'out_of_range'"}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"fullname": "livekit.api.TwirpErrorCode.UNIMPLEMENTED", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNIMPLEMENTED", "kind": "variable", "doc": "

\n", "default_value": "'unimplemented'"}, "livekit.api.TwirpErrorCode.INTERNAL": {"fullname": "livekit.api.TwirpErrorCode.INTERNAL", "modulename": "livekit.api", "qualname": "TwirpErrorCode.INTERNAL", "kind": "variable", "doc": "

\n", "default_value": "'internal'"}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"fullname": "livekit.api.TwirpErrorCode.UNAVAILABLE", "modulename": "livekit.api", "qualname": "TwirpErrorCode.UNAVAILABLE", "kind": "variable", "doc": "

\n", "default_value": "'unavailable'"}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"fullname": "livekit.api.TwirpErrorCode.DATA_LOSS", "modulename": "livekit.api", "qualname": "TwirpErrorCode.DATA_LOSS", "kind": "variable", "doc": "

\n", "default_value": "'dataloss'"}, "livekit.api.agent_dispatch_service": {"fullname": "livekit.api.agent_dispatch_service", "modulename": "livekit.api.agent_dispatch_service", "kind": "module", "doc": "

\n"}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService", "kind": "class", "doc": "

Manage agent dispatches. Service APIs require roomAdmin permissions.

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nagent_dispatch = lkapi.agent_dispatch\n
\n
\n", "bases": "livekit.api._service.Service"}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.__init__", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.create_dispatch", "kind": "function", "doc": "

Create an explicit dispatch for an agent to join a room.

\n\n

To use explicit dispatch, your agent must be registered with an agentName.

\n\n
Arguments:
\n\n
    \n
  • req (CreateAgentDispatchRequest): Request containing dispatch creation parameters
  • \n
\n\n
Returns:
\n\n
\n

AgentDispatch: The created agent dispatch object

\n
\n", "signature": "(\tself,\treq: agent_dispatch.CreateAgentDispatchRequest) -> agent_dispatch.AgentDispatch:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.delete_dispatch", "kind": "function", "doc": "

Delete an explicit dispatch for an agent in a room.

\n\n
Arguments:
\n\n
    \n
  • dispatch_id (str): ID of the dispatch to delete
  • \n
  • room_name (str): Name of the room containing the dispatch
  • \n
\n\n
Returns:
\n\n
\n

AgentDispatch: The deleted agent dispatch object

\n
\n", "signature": "(self, dispatch_id: str, room_name: str) -> agent_dispatch.AgentDispatch:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.list_dispatch", "kind": "function", "doc": "

List all agent dispatches in a room.

\n\n
Arguments:
\n\n
    \n
  • room_name (str): Name of the room to list dispatches from
  • \n
\n\n
Returns:
\n\n
\n

list[AgentDispatch]: List of agent dispatch objects in the room

\n
\n", "signature": "(self, room_name: str) -> list[agent_dispatch.AgentDispatch]:", "funcdef": "async def"}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"fullname": "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch", "modulename": "livekit.api.agent_dispatch_service", "qualname": "AgentDispatchService.get_dispatch", "kind": "function", "doc": "

Get an Agent dispatch by ID

\n\n
Arguments:
\n\n
    \n
  • dispatch_id (str): ID of the dispatch to retrieve
  • \n
  • room_name (str): Name of the room containing the dispatch
  • \n
\n\n
Returns:
\n\n
\n

Optional[AgentDispatch]: The requested agent dispatch object if found, None otherwise

\n
\n", "signature": "(\tself,\tdispatch_id: str,\troom_name: str) -> Optional[agent_dispatch.AgentDispatch]:", "funcdef": "async def"}, "livekit.api.egress_service": {"fullname": "livekit.api.egress_service", "modulename": "livekit.api.egress_service", "kind": "module", "doc": "

\n"}, "livekit.api.egress_service.EgressService": {"fullname": "livekit.api.egress_service.EgressService", "modulename": "livekit.api.egress_service", "qualname": "EgressService", "kind": "class", "doc": "

Client for LiveKit Egress Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\negress = lkapi.egress\n
\n
\n\n

Also see https://docs.livekit.io/home/egress/overview/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.egress_service.EgressService.__init__": {"fullname": "livekit.api.egress_service.EgressService.__init__", "modulename": "livekit.api.egress_service", "qualname": "EgressService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"fullname": "livekit.api.egress_service.EgressService.start_room_composite_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_room_composite_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.RoomCompositeEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_web_egress": {"fullname": "livekit.api.egress_service.EgressService.start_web_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_web_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.WebEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_participant_egress": {"fullname": "livekit.api.egress_service.EgressService.start_participant_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_participant_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.ParticipantEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"fullname": "livekit.api.egress_service.EgressService.start_track_composite_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_track_composite_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.TrackCompositeEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.start_track_egress": {"fullname": "livekit.api.egress_service.EgressService.start_track_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.start_track_egress", "kind": "function", "doc": "

\n", "signature": "(self, start: egress.TrackEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.update_layout": {"fullname": "livekit.api.egress_service.EgressService.update_layout", "modulename": "livekit.api.egress_service", "qualname": "EgressService.update_layout", "kind": "function", "doc": "

\n", "signature": "(self, update: egress.UpdateLayoutRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.update_stream": {"fullname": "livekit.api.egress_service.EgressService.update_stream", "modulename": "livekit.api.egress_service", "qualname": "EgressService.update_stream", "kind": "function", "doc": "

\n", "signature": "(self, update: egress.UpdateStreamRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.list_egress": {"fullname": "livekit.api.egress_service.EgressService.list_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.list_egress", "kind": "function", "doc": "

\n", "signature": "(self, list: egress.ListEgressRequest) -> egress.ListEgressResponse:", "funcdef": "async def"}, "livekit.api.egress_service.EgressService.stop_egress": {"fullname": "livekit.api.egress_service.EgressService.stop_egress", "modulename": "livekit.api.egress_service", "qualname": "EgressService.stop_egress", "kind": "function", "doc": "

\n", "signature": "(self, stop: egress.StopEgressRequest) -> egress.EgressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service": {"fullname": "livekit.api.ingress_service", "modulename": "livekit.api.ingress_service", "kind": "module", "doc": "

\n"}, "livekit.api.ingress_service.IngressService": {"fullname": "livekit.api.ingress_service.IngressService", "modulename": "livekit.api.ingress_service", "qualname": "IngressService", "kind": "class", "doc": "

Client for LiveKit Ingress Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\ningress = lkapi.ingress\n
\n
\n\n

Also see https://docs.livekit.io/home/ingress/overview/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.ingress_service.IngressService.__init__": {"fullname": "livekit.api.ingress_service.IngressService.__init__", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.ingress_service.IngressService.create_ingress": {"fullname": "livekit.api.ingress_service.IngressService.create_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.create_ingress", "kind": "function", "doc": "

\n", "signature": "(self, create: ingress.CreateIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.update_ingress": {"fullname": "livekit.api.ingress_service.IngressService.update_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.update_ingress", "kind": "function", "doc": "

\n", "signature": "(self, update: ingress.UpdateIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.list_ingress": {"fullname": "livekit.api.ingress_service.IngressService.list_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.list_ingress", "kind": "function", "doc": "

\n", "signature": "(self, list: ingress.ListIngressRequest) -> ingress.ListIngressResponse:", "funcdef": "async def"}, "livekit.api.ingress_service.IngressService.delete_ingress": {"fullname": "livekit.api.ingress_service.IngressService.delete_ingress", "modulename": "livekit.api.ingress_service", "qualname": "IngressService.delete_ingress", "kind": "function", "doc": "

\n", "signature": "(self, delete: ingress.DeleteIngressRequest) -> ingress.IngressInfo:", "funcdef": "async def"}, "livekit.api.room_service": {"fullname": "livekit.api.room_service", "modulename": "livekit.api.room_service", "kind": "module", "doc": "

\n"}, "livekit.api.room_service.RoomService": {"fullname": "livekit.api.room_service.RoomService", "modulename": "livekit.api.room_service", "qualname": "RoomService", "kind": "class", "doc": "

Client for LiveKit RoomService API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nroom_service = lkapi.room\n
\n
\n\n

Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/

\n", "bases": "livekit.api._service.Service"}, "livekit.api.room_service.RoomService.__init__": {"fullname": "livekit.api.room_service.RoomService.__init__", "modulename": "livekit.api.room_service", "qualname": "RoomService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.room_service.RoomService.create_room": {"fullname": "livekit.api.room_service.RoomService.create_room", "modulename": "livekit.api.room_service", "qualname": "RoomService.create_room", "kind": "function", "doc": "

\n", "signature": "(self, create: room.CreateRoomRequest) -> models.Room:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.list_rooms": {"fullname": "livekit.api.room_service.RoomService.list_rooms", "modulename": "livekit.api.room_service", "qualname": "RoomService.list_rooms", "kind": "function", "doc": "

\n", "signature": "(self, list: room.ListRoomsRequest) -> room.ListRoomsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.delete_room": {"fullname": "livekit.api.room_service.RoomService.delete_room", "modulename": "livekit.api.room_service", "qualname": "RoomService.delete_room", "kind": "function", "doc": "

\n", "signature": "(self, delete: room.DeleteRoomRequest) -> room.DeleteRoomResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_room_metadata": {"fullname": "livekit.api.room_service.RoomService.update_room_metadata", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_room_metadata", "kind": "function", "doc": "

\n", "signature": "(self, update: room.UpdateRoomMetadataRequest) -> models.Room:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.list_participants": {"fullname": "livekit.api.room_service.RoomService.list_participants", "modulename": "livekit.api.room_service", "qualname": "RoomService.list_participants", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: room.ListParticipantsRequest) -> room.ListParticipantsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.get_participant": {"fullname": "livekit.api.room_service.RoomService.get_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.get_participant", "kind": "function", "doc": "

\n", "signature": "(self, get: room.RoomParticipantIdentity) -> models.ParticipantInfo:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.remove_participant": {"fullname": "livekit.api.room_service.RoomService.remove_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.remove_participant", "kind": "function", "doc": "

\n", "signature": "(\tself,\tremove: room.RoomParticipantIdentity) -> room.RemoveParticipantResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.mute_published_track": {"fullname": "livekit.api.room_service.RoomService.mute_published_track", "modulename": "livekit.api.room_service", "qualname": "RoomService.mute_published_track", "kind": "function", "doc": "

\n", "signature": "(self, update: room.MuteRoomTrackRequest) -> room.MuteRoomTrackResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_participant": {"fullname": "livekit.api.room_service.RoomService.update_participant", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_participant", "kind": "function", "doc": "

\n", "signature": "(self, update: room.UpdateParticipantRequest) -> models.ParticipantInfo:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.update_subscriptions": {"fullname": "livekit.api.room_service.RoomService.update_subscriptions", "modulename": "livekit.api.room_service", "qualname": "RoomService.update_subscriptions", "kind": "function", "doc": "

\n", "signature": "(\tself,\tupdate: room.UpdateSubscriptionsRequest) -> room.UpdateSubscriptionsResponse:", "funcdef": "async def"}, "livekit.api.room_service.RoomService.send_data": {"fullname": "livekit.api.room_service.RoomService.send_data", "modulename": "livekit.api.room_service", "qualname": "RoomService.send_data", "kind": "function", "doc": "

\n", "signature": "(self, send: room.SendDataRequest) -> room.SendDataResponse:", "funcdef": "async def"}, "livekit.api.sip_service": {"fullname": "livekit.api.sip_service", "modulename": "livekit.api.sip_service", "kind": "module", "doc": "

\n"}, "livekit.api.sip_service.SipService": {"fullname": "livekit.api.sip_service.SipService", "modulename": "livekit.api.sip_service", "qualname": "SipService", "kind": "class", "doc": "

Client for LiveKit SIP Service API

\n\n

Recommended way to use this service is via livekit.api.LiveKitAPI:

\n\n
\n
from livekit import api\nlkapi = api.LiveKitAPI()\nsip_service = lkapi.sip\n
\n
\n", "bases": "livekit.api._service.Service"}, "livekit.api.sip_service.SipService.__init__": {"fullname": "livekit.api.sip_service.SipService.__init__", "modulename": "livekit.api.sip_service", "qualname": "SipService.__init__", "kind": "function", "doc": "

\n", "signature": "(\tsession: aiohttp.client.ClientSession,\turl: str,\tapi_key: str,\tapi_secret: str)"}, "livekit.api.sip_service.SipService.create_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, create: sip.CreateSIPTrunkRequest) -> sip.SIPTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_inbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_inbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPInboundTrunkRequest) -> sip.SIPInboundTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"fullname": "livekit.api.sip_service.SipService.create_sip_outbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_outbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPOutboundTrunkRequest) -> sip.SIPOutboundTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, list: sip.ListSIPTrunkRequest) -> sip.ListSIPTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_inbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_inbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPInboundTrunkRequest) -> sip.ListSIPInboundTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"fullname": "livekit.api.sip_service.SipService.list_sip_outbound_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_outbound_trunk", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPOutboundTrunkRequest) -> sip.ListSIPOutboundTrunkResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"fullname": "livekit.api.sip_service.SipService.delete_sip_trunk", "modulename": "livekit.api.sip_service", "qualname": "SipService.delete_sip_trunk", "kind": "function", "doc": "

\n", "signature": "(self, delete: sip.DeleteSIPTrunkRequest) -> sip.SIPTrunkInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.create_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tcreate: sip.CreateSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.list_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.list_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tlist: sip.ListSIPDispatchRuleRequest) -> sip.ListSIPDispatchRuleResponse:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"fullname": "livekit.api.sip_service.SipService.delete_sip_dispatch_rule", "modulename": "livekit.api.sip_service", "qualname": "SipService.delete_sip_dispatch_rule", "kind": "function", "doc": "

\n", "signature": "(\tself,\tdelete: sip.DeleteSIPDispatchRuleRequest) -> sip.SIPDispatchRuleInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.create_sip_participant": {"fullname": "livekit.api.sip_service.SipService.create_sip_participant", "modulename": "livekit.api.sip_service", "qualname": "SipService.create_sip_participant", "kind": "function", "doc": "

\n", "signature": "(self, create: sip.CreateSIPParticipantRequest) -> sip.SIPParticipantInfo:", "funcdef": "async def"}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"fullname": "livekit.api.sip_service.SipService.transfer_sip_participant", "modulename": "livekit.api.sip_service", "qualname": "SipService.transfer_sip_participant", "kind": "function", "doc": "

\n", "signature": "(\tself,\ttransfer: sip.TransferSIPParticipantRequest) -> sip.SIPParticipantInfo:", "funcdef": "async def"}}, "docInfo": {"livekit.api": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 42}, "livekit.api.LiveKitAPI": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 123}, "livekit.api.LiveKitAPI.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 172, "bases": 0, "doc": 88}, "livekit.api.LiveKitAPI.agent_dispatch": {"qualname": 3, "fullname": 5, "annotation": 7, "default_value": 0, "signature": 0, "bases": 0, "doc": 17}, "livekit.api.LiveKitAPI.room": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.ingress": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.egress": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.LiveKitAPI.sip": {"qualname": 2, "fullname": 4, "annotation": 6, "default_value": 0, "signature": 0, "bases": 0, "doc": 16}, "livekit.api.VideoGrants": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 362, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_create": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_list": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_record": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_admin": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room_join": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.room": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 4, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_subscribe": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish_data": {"qualname": 4, "fullname": 6, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_publish_sources": {"qualname": 4, "fullname": 6, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.can_update_own_metadata": {"qualname": 5, "fullname": 7, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.ingress_admin": {"qualname": 3, "fullname": 5, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.hidden": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.recorder": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.VideoGrants.agent": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.admin": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.SIPGrants.call": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "livekit.api.AccessToken.ParticipantKind": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 18, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.api_key": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.api_secret": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.claims": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.identity": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.ttl": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_ttl": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_grants": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_sip_grants": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 58, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_identity": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_kind": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 92, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_name": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_metadata": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_attributes": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 52, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_sha256": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_room_preset": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.AccessToken.with_room_config": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 47, "bases": 0, "doc": 3}, "livekit.api.AccessToken.to_jwt": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 101, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.api_key": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.api_secret": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TokenVerifier.verify": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 31, "bases": 0, "doc": 3}, "livekit.api.WebhookReceiver.receive": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "livekit.api.TwirpError": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 11}, "livekit.api.TwirpError.__init__": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 24, "bases": 0, "doc": 3}, "livekit.api.TwirpError.code": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpError.message": {"qualname": 2, "fullname": 4, "annotation": 2, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.CANCELED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNKNOWN": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.MALFORMED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 6, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.ABORTED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"qualname": 4, "fullname": 6, "annotation": 0, "default_value": 7, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.INTERNAL": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 5, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service": {"qualname": 0, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"qualname": 1, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 84}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 38, "bases": 0, "doc": 65}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 64}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 51}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"qualname": 3, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 51, "bases": 0, "doc": 63}, "livekit.api.egress_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 88}, "livekit.api.egress_service.EgressService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_web_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_participant_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.start_track_egress": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.update_layout": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.update_stream": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.list_egress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.egress_service.EgressService.stop_egress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 88}, "livekit.api.ingress_service.IngressService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.create_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.update_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.list_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.ingress_service.IngressService.delete_ingress": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 96}, "livekit.api.room_service.RoomService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.create_room": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.list_rooms": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.delete_room": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_room_metadata": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.list_participants": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.get_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.remove_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.mute_published_track": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_participant": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.update_subscriptions": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.room_service.RoomService.send_data": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service": {"qualname": 0, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService": {"qualname": 1, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 4, "doc": 80}, "livekit.api.sip_service.SipService.__init__": {"qualname": 3, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 60, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"qualname": 5, "fullname": 9, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.create_sip_participant": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"qualname": 4, "fullname": 8, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 3}}, "length": 135, "save": true}, "index": {"qualname": {"root": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 7}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 2}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 2, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 20}}}}}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 8}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 13, "s": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 13}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.room_record": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.recorder": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 8, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 11}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 4}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_subscribe": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 17}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 9}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.call": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.claims": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.code": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 2}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_join": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 6, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.message": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.hidden": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 2}}, "o": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 19}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 3}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 7}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}}, "fullname": {"root": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}, "livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 135, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 7}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.api_secret": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.api_secret": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}, "livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 135}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}}, "df": 3}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.AccessToken.claims": {"tf": 1}, "livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 20}}}}}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 12}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.4142135623730951}}, "df": 9, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 6}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 2}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.identity": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 11}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 5}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 24, "s": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 13}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.room_record": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.recorder": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 3}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.4142135623730951}}, "df": 13, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 11}}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.4142135623730951}}, "df": 17, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.SIPGrants": {"tf": 1}, "livekit.api.SIPGrants.__init__": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 4}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 14}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_subscribe": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 55}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants": {"tf": 1}, "livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 17}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 9}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 5, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.call": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.claims": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.code": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 2}}}}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.room_join": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 6, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 3}}}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.message": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.hidden": {"tf": 1}}, "df": 1}}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ttl": {"tf": 1}, "livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 2}}, "o": {"docs": {"livekit.api.AccessToken.to_jwt": {"tf": 1}}, "df": 1, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TokenVerifier": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.TokenVerifier.api_key": {"tf": 1}, "livekit.api.TokenVerifier.api_secret": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.TwirpError": {"tf": 1}, "livekit.api.TwirpError.__init__": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 4, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 19}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 3}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 7}}}}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}, "e": {"docs": {}, "df": 0, "b": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 3}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}}, "annotation": {"root": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 24, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 5}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1}, "livekit.api.TwirpError.code": {"tf": 1}, "livekit.api.TwirpError.message": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 10}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.can_publish_sources": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}, "livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 5}}}}}}, "default_value": {"root": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.4142135623730951}}, "df": 20, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.room_create": {"tf": 1}, "livekit.api.VideoGrants.room_list": {"tf": 1}, "livekit.api.VideoGrants.room_record": {"tf": 1}, "livekit.api.VideoGrants.room_admin": {"tf": 1}, "livekit.api.VideoGrants.room_join": {"tf": 1}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1}, "livekit.api.VideoGrants.hidden": {"tf": 1}, "livekit.api.VideoGrants.recorder": {"tf": 1}, "livekit.api.VideoGrants.agent": {"tf": 1}}, "df": 11}}, "t": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}, "x": {"2": {"7": {"docs": {"livekit.api.VideoGrants.room": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.ParticipantKind": {"tf": 3.1622776601683795}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.4142135623730951}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.4142135623730951}}, "df": 20}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.can_publish": {"tf": 1}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1}}, "df": 3}}}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.SIPGrants.admin": {"tf": 1}, "livekit.api.SIPGrants.call": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.ParticipantKind": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.ABORTED": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.CANCELED": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1}}, "df": 1}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}, "f": {"docs": {"livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1}}, "df": 1}}}}, "signature": {"root": {"3": {"9": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_kind": {"tf": 3.1622776601683795}}, "df": 2}, "docs": {}, "df": 0}, "5": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}, "6": {"0": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 11.832159566199232}, "livekit.api.VideoGrants.__init__": {"tf": 17}, "livekit.api.SIPGrants.__init__": {"tf": 5.656854249492381}, "livekit.api.AccessToken.__init__": {"tf": 6.48074069840786}, "livekit.api.AccessToken.with_ttl": {"tf": 6}, "livekit.api.AccessToken.with_grants": {"tf": 6.782329983125268}, "livekit.api.AccessToken.with_sip_grants": {"tf": 6.782329983125268}, "livekit.api.AccessToken.with_identity": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_kind": {"tf": 8.306623862918075}, "livekit.api.AccessToken.with_name": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_metadata": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_attributes": {"tf": 6.48074069840786}, "livekit.api.AccessToken.with_sha256": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_room_preset": {"tf": 5.656854249492381}, "livekit.api.AccessToken.with_room_config": {"tf": 6.164414002968976}, "livekit.api.AccessToken.to_jwt": {"tf": 3.4641016151377544}, "livekit.api.TokenVerifier.__init__": {"tf": 9.16515138991168}, "livekit.api.TokenVerifier.verify": {"tf": 5.656854249492381}, "livekit.api.WebhookReceiver.__init__": {"tf": 4.898979485566356}, "livekit.api.WebhookReceiver.receive": {"tf": 5.656854249492381}, "livekit.api.TwirpError.__init__": {"tf": 4.47213595499958}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 6.928203230275509}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 5.477225575051661}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 5.656854249492381}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 5.385164807134504}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 6.324555320336759}, "livekit.api.egress_service.EgressService.__init__": {"tf": 6.928203230275509}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 5.291502622129181}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 6.928203230275509}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 5.291502622129181}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.__init__": {"tf": 6.928203230275509}, "livekit.api.room_service.RoomService.create_room": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.delete_room": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.list_participants": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.get_participant": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_participant": {"tf": 5.291502622129181}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 5.477225575051661}, "livekit.api.room_service.RoomService.send_data": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.__init__": {"tf": 6.928203230275509}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 5.477225575051661}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 5.291502622129181}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 5.477225575051661}}, "df": 66, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6}}, "p": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 8, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_layout": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.update_stream": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 3.3166247903554}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 5}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1.4142135623730951}, "livekit.api.TwirpError.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.7320508075688772}}, "df": 22}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 8}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "f": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.AccessToken.to_jwt": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.receive": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1}, "livekit.api.room_service.RoomService.send_data": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 54}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 5}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.send_data": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.4142135623730951}}, "df": 13, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 2}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"2": {"5": {"6": {"docs": {"livekit.api.AccessToken.with_sha256": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 2.449489742783178}, "livekit.api.VideoGrants.__init__": {"tf": 3.3166247903554}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 4}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.__init__": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.4142135623730951}}, "df": 21}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6}}}}}}, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.SIPGrants.__init__": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 6, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 13, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 11}}}}}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.AccessToken.__init__": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 8}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1.4142135623730951}, "livekit.api.WebhookReceiver.__init__": {"tf": 1.4142135623730951}, "livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 14, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}}, "df": 1}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1}, "livekit.api.room_service.RoomService.__init__": {"tf": 1}, "livekit.api.sip_service.SipService.__init__": {"tf": 1}}, "df": 5}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TokenVerifier.verify": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError.__init__": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 8, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.create_room": {"tf": 1}}, "df": 1}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 2.23606797749979}}, "df": 1}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.SIPGrants.__init__": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "q": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 2.449489742783178}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService.send_data": {"tf": 1.4142135623730951}}, "df": 16, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.AccessToken.with_room_config": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}}}}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 3.605551275463989}, "livekit.api.SIPGrants.__init__": {"tf": 1.4142135623730951}}, "df": 2}}, "d": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 10, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.list_egress": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.egress_service.EgressService.list_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.list_rooms": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.list_participants": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.AccessToken.with_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.4142135623730951}, "livekit.api.AccessToken.with_identity": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.AccessToken.with_name": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}, "livekit.api.AccessToken.with_attributes": {"tf": 1}, "livekit.api.AccessToken.with_sha256": {"tf": 1}, "livekit.api.AccessToken.with_room_preset": {"tf": 1}, "livekit.api.AccessToken.with_room_config": {"tf": 1}, "livekit.api.TokenVerifier.verify": {"tf": 1}, "livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 13}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.TokenVerifier.__init__": {"tf": 1}}, "df": 1}}}}}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_room_preset": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 2}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.AccessToken.with_ttl": {"tf": 1}, "livekit.api.TokenVerifier.__init__": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.AccessToken.with_attributes": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.delete_room": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.delete_room": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_metadata": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.TwirpError.__init__": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.room_service.RoomService.create_room": {"tf": 1}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1}}, "df": 4}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.room_service.RoomService.mute_published_track": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}, "livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.4142135623730951}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1}}, "df": 3}}}}}}}}}}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.AccessToken.with_identity": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.VideoGrants.__init__": {"tf": 1}}, "df": 1}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.SIPGrants.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.room_service.RoomService.get_participant": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_grants": {"tf": 1}}, "df": 1}}}}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.WebhookReceiver.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.AccessToken.with_kind": {"tf": 1}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.4142135623730951}}, "df": 10, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1}}, "df": 8}}}}}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.WebhookReceiver.receive": {"tf": 1}}, "df": 1}}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 5}}}}}}}}}, "doc": {"root": {"3": {"9": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"livekit.api": {"tf": 3.872983346207417}, "livekit.api.LiveKitAPI": {"tf": 9.273618495495704}, "livekit.api.LiveKitAPI.__init__": {"tf": 5.916079783099616}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.room": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.ingress": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.egress": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.sip": {"tf": 2.449489742783178}, "livekit.api.VideoGrants": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.__init__": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_create": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_list": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_record": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_admin": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room_join": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.room": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_subscribe": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish_data": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_publish_sources": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.can_update_own_metadata": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.ingress_admin": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.hidden": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.recorder": {"tf": 1.7320508075688772}, "livekit.api.VideoGrants.agent": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.__init__": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.admin": {"tf": 1.7320508075688772}, "livekit.api.SIPGrants.call": {"tf": 1.7320508075688772}, "livekit.api.AccessToken": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.__init__": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.ParticipantKind": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.api_key": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.api_secret": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.claims": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.identity": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.ttl": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_ttl": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_grants": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_sip_grants": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_identity": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_kind": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_name": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_metadata": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_attributes": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_sha256": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_room_preset": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.with_room_config": {"tf": 1.7320508075688772}, "livekit.api.AccessToken.to_jwt": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.__init__": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.api_key": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.api_secret": {"tf": 1.7320508075688772}, "livekit.api.TokenVerifier.verify": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver.__init__": {"tf": 1.7320508075688772}, "livekit.api.WebhookReceiver.receive": {"tf": 1.7320508075688772}, "livekit.api.TwirpError": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.__init__": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.code": {"tf": 1.7320508075688772}, "livekit.api.TwirpError.message": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.CANCELED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNKNOWN": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.INVALID_ARGUMENT": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.MALFORMED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.DEADLINE_EXCEEDED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.NOT_FOUND": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.BAD_ROUTE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.ALREADY_EXISTS": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.PERMISSION_DENIED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNAUTHENTICATED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.RESOURCE_EXHAUSTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.FAILED_PRECONDITION": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.ABORTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.OUT_OF_RANGE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNIMPLEMENTED": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.INTERNAL": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.UNAVAILABLE": {"tf": 1.7320508075688772}, "livekit.api.TwirpErrorCode.DATA_LOSS": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 7.280109889280518}, "livekit.api.agent_dispatch_service.AgentDispatchService.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 5.196152422706632}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 5.196152422706632}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 4.69041575982343}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 5.0990195135927845}, "livekit.api.egress_service": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService": {"tf": 7.483314773547883}, "livekit.api.egress_service.EgressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_room_composite_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_web_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_participant_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_track_composite_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.start_track_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.update_layout": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.update_stream": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.list_egress": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService.stop_egress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService": {"tf": 7.483314773547883}, "livekit.api.ingress_service.IngressService.__init__": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.create_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.update_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.list_ingress": {"tf": 1.7320508075688772}, "livekit.api.ingress_service.IngressService.delete_ingress": {"tf": 1.7320508075688772}, "livekit.api.room_service": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService": {"tf": 7.615773105863909}, "livekit.api.room_service.RoomService.__init__": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.create_room": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.list_rooms": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.delete_room": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_room_metadata": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.list_participants": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.get_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.remove_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.mute_published_track": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_participant": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.update_subscriptions": {"tf": 1.7320508075688772}, "livekit.api.room_service.RoomService.send_data": {"tf": 1.7320508075688772}, "livekit.api.sip_service": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService": {"tf": 7.211102550927978}, "livekit.api.sip_service.SipService.__init__": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_inbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_outbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_inbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_outbound_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.delete_sip_trunk": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.list_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.delete_sip_dispatch_rule": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.create_sip_participant": {"tf": 1.7320508075688772}, "livekit.api.sip_service.SipService.transfer_sip_participant": {"tf": 1.7320508075688772}}, "df": 135, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.LiveKitAPI.__init__": {"tf": 2}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 2}, "livekit.api.ingress_service.IngressService": {"tf": 2}, "livekit.api.room_service.RoomService": {"tf": 2.23606797749979}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 13, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 8}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.7320508075688772}}, "df": 2, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "[": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.4142135623730951}}, "df": 6}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.egress_service.EgressService": {"tf": 1.4142135623730951}, "livekit.api.ingress_service.IngressService": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 10, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 9}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.sip": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 3}}}, "a": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "i": {"docs": {"livekit.api.LiveKitAPI": {"tf": 2}, "livekit.api.LiveKitAPI.__init__": {"tf": 2.449489742783178}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.7320508075688772}, "livekit.api.egress_service.EgressService": {"tf": 2}, "livekit.api.ingress_service.IngressService": {"tf": 2}, "livekit.api.room_service.RoomService": {"tf": 2}, "livekit.api.sip_service.SipService": {"tf": 2}}, "df": 12, "s": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 2}}}, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3, "d": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 7, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 3}, "s": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 3}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 5}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1.4142135623730951}, "livekit.api.TwirpError": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 8}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 8}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}}}}}}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1.7320508075688772}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.room": {"tf": 1.4142135623730951}, "livekit.api.room_service.RoomService": {"tf": 1}}, "df": 2}}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}, "q": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.egress": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}}}}, "x": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 2}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}}, "df": 2, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.ingress": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}}, "df": 6}}}}}}}, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 7}, "o": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.egress_service.EgressService": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.ingress_service.IngressService": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}}}}, "f": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 2}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.7320508075688772}}, "df": 2}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 2.23606797749979}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 2.23606797749979}}, "df": 7, "e": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}}, "df": 1, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.TwirpError": {"tf": 1}}, "df": 2}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "d": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}, "e": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}, "livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 2}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 2}}, "df": 10}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "o": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 9}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 6}}, "r": {"docs": {}, "df": 0, "l": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"livekit.api.LiveKitAPI": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}, "n": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "a": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService": {"tf": 1}, "livekit.api.egress_service.EgressService": {"tf": 1}, "livekit.api.ingress_service.IngressService": {"tf": 1}, "livekit.api.room_service.RoomService": {"tf": 1}, "livekit.api.sip_service.SipService": {"tf": 1}}, "df": 5}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "y": {"docs": {"livekit.api.LiveKitAPI.__init__": {"tf": 1.7320508075688772}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"livekit.api.LiveKitAPI.agent_dispatch": {"tf": 1}, "livekit.api.LiveKitAPI.room": {"tf": 1}, "livekit.api.LiveKitAPI.ingress": {"tf": 1}, "livekit.api.LiveKitAPI.egress": {"tf": 1}, "livekit.api.LiveKitAPI.sip": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1.4142135623730951}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1.4142135623730951}}, "df": 8}, "b": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.delete_dispatch": {"tf": 1}, "livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 3, "s": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.list_dispatch": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "[": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"livekit.api.TwirpError": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}, "y": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.create_dispatch": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"livekit.api.agent_dispatch_service.AgentDispatchService.get_dispatch": {"tf": 1}}, "df": 1}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; - - // mirrored in build-search-index.js (part 1) - // Also split on html tags. this is a cheap heuristic, but good enough. - elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); - - let searchIndex; - if (docs._isPrebuiltIndex) { - console.info("using precompiled search index"); - searchIndex = elasticlunr.Index.load(docs); - } else { - console.time("building search index"); - // mirrored in build-search-index.js (part 2) - searchIndex = elasticlunr(function () { - this.pipeline.remove(elasticlunr.stemmer); - this.pipeline.remove(elasticlunr.stopWordFilter); - this.addField("qualname"); - this.addField("fullname"); - this.addField("annotation"); - this.addField("default_value"); - this.addField("signature"); - this.addField("bases"); - this.addField("doc"); - this.setRef("fullname"); - }); - for (let doc of docs) { - searchIndex.addDoc(doc); - } - console.timeEnd("building search index"); - } - - return (term) => searchIndex.search(term, { - fields: { - qualname: {boost: 4}, - fullname: {boost: 2}, - annotation: {boost: 2}, - default_value: {boost: 2}, - signature: {boost: 2}, - bases: {boost: 2}, - doc: {boost: 1}, - }, - expand: true - }); -})(); \ No newline at end of file From 08a2c0b8ac3d92a6e5a2d4a90b73215ec7c78110 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:34:04 -0800 Subject: [PATCH 04/11] doc rs --- livekit-api/livekit/api/room_service.py | 143 +++++++++++++++++++++++- 1 file changed, 142 insertions(+), 1 deletion(-) diff --git a/livekit-api/livekit/api/room_service.py b/livekit-api/livekit/api/room_service.py index 0ef4e110..be40f1f5 100644 --- a/livekit-api/livekit/api/room_service.py +++ b/livekit-api/livekit/api/room_service.py @@ -25,7 +25,26 @@ def __init__( ): super().__init__(session, url, api_key, api_secret) - async def create_room(self, create: CreateRoomRequest) -> Room: + async def create_room( + self, + create: CreateRoomRequest, + ) -> Room: + """Creates a new room with specified configuration. + + Args: + create (CreateRoomRequest): arg containing: + - name: str - Unique room name + - empty_timeout: int - Seconds to keep room open if empty + - max_participants: int - Max allowed participants + - metadata: str - Custom room metadata + - egress: RoomEgress - Egress configuration + - min_playout_delay: int - Minimum playout delay in ms + - max_playout_delay: int - Maximum playout delay in ms + - sync_streams: bool - Enable A/V sync for playout delays >200ms + + Returns: + Room: The created room object + """ return await self._client.request( SVC, "CreateRoom", @@ -35,6 +54,16 @@ async def create_room(self, create: CreateRoomRequest) -> Room: ) async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse: + """Lists active rooms. + + Args: + list (ListRoomsRequest): arg containing: + - names: list[str] - Optional list of room names to filter by + + Returns: + ListRoomsResponse: + - rooms: list[Room] - List of active Room objects + """ return await self._client.request( SVC, "ListRooms", @@ -44,6 +73,15 @@ async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse: ) async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse: + """Deletes a room and disconnects all participants. + + Args: + delete (DeleteRoomRequest): arg containing: + - room: str - Name of room to delete + + Returns: + DeleteRoomResponse: Empty response object + """ return await self._client.request( SVC, "DeleteRoom", @@ -53,6 +91,16 @@ async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse: ) async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room: + """Updates a room's [metadata](https://docs.livekit.io/home/client/data/room-metadata/). + + Args: + update (UpdateRoomMetadataRequest): arg containing: + - room: str - Name of room to update + - metadata: str - New metadata to set + + Returns: + Room: Updated Room object + """ return await self._client.request( SVC, "UpdateRoomMetadata", @@ -64,6 +112,16 @@ async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room: async def list_participants( self, list: ListParticipantsRequest ) -> ListParticipantsResponse: + """Lists all participants in a room. + + Args: + list (ListParticipantsRequest): arg containing: + - room: str - Name of room to list participants from + + Returns: + ListParticipantsResponse: + - participants: list[ParticipantInfo] - List of participant details + """ return await self._client.request( SVC, "ListParticipants", @@ -73,6 +131,26 @@ async def list_participants( ) async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo: + """Gets details about a specific participant. + + Args: + get (RoomParticipantIdentity): arg containing: + - room: str - Room name + - identity: str - Participant identity to look up + + Returns: + ParticipantInfo: + - sid: str - Participant session ID + - identity: str - Participant identity + - state: int - Connection state + - tracks: list[TrackInfo] - Published tracks + - metadata: str - Participant metadata + - joined_at: int - Join timestamp + - name: str - Display name + - version: int - Protocol version + - permission: ParticipantPermission - Granted permissions + - region: str - Connected region + """ return await self._client.request( SVC, "GetParticipant", @@ -84,6 +162,16 @@ async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo async def remove_participant( self, remove: RoomParticipantIdentity ) -> RemoveParticipantResponse: + """Removes a participant from a room. + + Args: + remove (RoomParticipantIdentity): arg containing: + - room: str - Room name + - identity: str - Identity of participant to remove + + Returns: + RemoveParticipantResponse: Empty response object + """ return await self._client.request( SVC, "RemoveParticipant", @@ -96,6 +184,19 @@ async def mute_published_track( self, update: MuteRoomTrackRequest, ) -> MuteRoomTrackResponse: + """Mutes or unmutes a participant's published track. + + Args: + update (MuteRoomTrackRequest): arg containing: + - room: str - Room name + - identity: str - Participant identity + - track_sid: str - Track session ID to mute + - muted: bool - True to mute, False to unmute + + Returns: + MuteRoomTrackResponse containing: + - track: TrackInfo - Updated track information + """ return await self._client.request( SVC, "MutePublishedTrack", @@ -107,6 +208,20 @@ async def mute_published_track( async def update_participant( self, update: UpdateParticipantRequest ) -> ParticipantInfo: + """Updates a participant's metadata or permissions. + + Args: + update (UpdateParticipantRequest): arg containing: + - room: str - Room name + - identity: str - Participant identity + - metadata: str - New metadata + - permission: ParticipantPermission - New permissions + - name: str - New display name + - attributes: dict[str, str] - Key-value attributes + + Returns: + ParticipantInfo: Updated participant information + """ return await self._client.request( SVC, "UpdateParticipant", @@ -118,6 +233,19 @@ async def update_participant( async def update_subscriptions( self, update: UpdateSubscriptionsRequest ) -> UpdateSubscriptionsResponse: + """Updates a participant's track subscriptions. + + Args: + update (UpdateSubscriptionsRequest): arg containing: + - room: str - Room name + - identity: str - Participant identity + - track_sids: list[str] - Track session IDs + - subscribe: bool - True to subscribe, False to unsubscribe + - participant_tracks: list[ParticipantTracks] - Participant track mappings + + Returns: + UpdateSubscriptionsResponse: Empty response object + """ return await self._client.request( SVC, "UpdateSubscriptions", @@ -127,6 +255,19 @@ async def update_subscriptions( ) async def send_data(self, send: SendDataRequest) -> SendDataResponse: + """Sends data to participants in a room. + + Args: + send (SendDataRequest): arg containing: + - room: str - Room name + - data: bytes - Data payload to send + - kind: DataPacket.Kind - RELIABLE or LOSSY delivery + - destination_identities: list[str] - Target participant identities + - topic: str - Optional topic for the message + + Returns: + SendDataResponse: Empty response object + """ return await self._client.request( SVC, "SendData", From 8448596bf3b7bccf89d347e2d8e6a1778b426d32 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:35:25 -0800 Subject: [PATCH 05/11] fmt --- .../livekit/api/agent_dispatch_service.py | 24 +++---- livekit-api/livekit/api/egress_service.py | 46 ++++++------ livekit-api/livekit/api/ingress_service.py | 33 ++++----- livekit-api/livekit/api/livekit_api.py | 14 ++-- livekit-api/livekit/api/room_service.py | 72 ++++++++++++------- livekit-api/livekit/api/sip_service.py | 42 +++++++---- 6 files changed, 135 insertions(+), 96 deletions(-) diff --git a/livekit-api/livekit/api/agent_dispatch_service.py b/livekit-api/livekit/api/agent_dispatch_service.py index a4f4da22..5cdfc1e7 100644 --- a/livekit-api/livekit/api/agent_dispatch_service.py +++ b/livekit-api/livekit/api/agent_dispatch_service.py @@ -1,6 +1,12 @@ import aiohttp from typing import Optional -from livekit.protocol.agent_dispatch import CreateAgentDispatchRequest, AgentDispatch, DeleteAgentDispatchRequest, ListAgentDispatchRequest, ListAgentDispatchResponse +from livekit.protocol.agent_dispatch import ( + CreateAgentDispatchRequest, + AgentDispatch, + DeleteAgentDispatchRequest, + ListAgentDispatchRequest, + ListAgentDispatchResponse, +) from ._service import Service from .access_token import VideoGrants @@ -25,9 +31,7 @@ def __init__( ): super().__init__(session, url, api_key, api_secret) - async def create_dispatch( - self, req: CreateAgentDispatchRequest - ) -> AgentDispatch: + async def create_dispatch(self, req: CreateAgentDispatchRequest) -> AgentDispatch: """Create an explicit dispatch for an agent to join a room. To use explicit dispatch, your agent must be registered with an `agentName`. @@ -46,9 +50,7 @@ async def create_dispatch( AgentDispatch, ) - async def delete_dispatch( - self, dispatch_id: str, room_name: str - ) -> AgentDispatch: + async def delete_dispatch(self, dispatch_id: str, room_name: str) -> AgentDispatch: """Delete an explicit dispatch for an agent in a room. Args: @@ -69,9 +71,7 @@ async def delete_dispatch( AgentDispatch, ) - async def list_dispatch( - self, room_name: str - ) -> list[AgentDispatch]: + async def list_dispatch(self, room_name: str) -> list[AgentDispatch]: """List all agent dispatches in a room. Args: @@ -104,9 +104,7 @@ async def get_dispatch( res = await self._client.request( SVC, "ListDispatch", - ListAgentDispatchRequest( - dispatch_id=dispatch_id, room=room_name - ), + ListAgentDispatchRequest(dispatch_id=dispatch_id, room=room_name), self._auth_header(VideoGrants(room_admin=True, room=room_name)), ListAgentDispatchResponse, ) diff --git a/livekit-api/livekit/api/egress_service.py b/livekit-api/livekit/api/egress_service.py index 37efcbd0..b5d4984e 100644 --- a/livekit-api/livekit/api/egress_service.py +++ b/livekit-api/livekit/api/egress_service.py @@ -1,24 +1,38 @@ import aiohttp -from livekit.protocol.egress import RoomCompositeEgressRequest, WebEgressRequest, ParticipantEgressRequest, TrackCompositeEgressRequest, TrackEgressRequest, UpdateLayoutRequest, UpdateStreamRequest, ListEgressRequest, StopEgressRequest, EgressInfo, ListEgressResponse +from livekit.protocol.egress import ( + RoomCompositeEgressRequest, + WebEgressRequest, + ParticipantEgressRequest, + TrackCompositeEgressRequest, + TrackEgressRequest, + UpdateLayoutRequest, + UpdateStreamRequest, + ListEgressRequest, + StopEgressRequest, + EgressInfo, + ListEgressResponse, +) from ._service import Service from .access_token import VideoGrants SVC = "Egress" """@private""" + class EgressService(Service): """Client for LiveKit Egress Service API - + Recommended way to use this service is via `livekit.api.LiveKitAPI`: - + ```python from livekit import api lkapi = api.LiveKitAPI() egress = lkapi.egress ``` - + Also see https://docs.livekit.io/home/egress/overview/ """ + def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): @@ -35,9 +49,7 @@ async def start_room_composite_egress( EgressInfo, ) - async def start_web_egress( - self, start: WebEgressRequest - ) -> EgressInfo: + async def start_web_egress(self, start: WebEgressRequest) -> EgressInfo: return await self._client.request( SVC, "StartWebEgress", @@ -68,9 +80,7 @@ async def start_track_composite_egress( EgressInfo, ) - async def start_track_egress( - self, start: TrackEgressRequest - ) -> EgressInfo: + async def start_track_egress(self, start: TrackEgressRequest) -> EgressInfo: return await self._client.request( SVC, "StartTrackEgress", @@ -79,9 +89,7 @@ async def start_track_egress( EgressInfo, ) - async def update_layout( - self, update: UpdateLayoutRequest - ) -> EgressInfo: + async def update_layout(self, update: UpdateLayoutRequest) -> EgressInfo: return await self._client.request( SVC, "UpdateLayout", @@ -90,9 +98,7 @@ async def update_layout( EgressInfo, ) - async def update_stream( - self, update: UpdateStreamRequest - ) -> EgressInfo: + async def update_stream(self, update: UpdateStreamRequest) -> EgressInfo: return await self._client.request( SVC, "UpdateStream", @@ -101,9 +107,7 @@ async def update_stream( EgressInfo, ) - async def list_egress( - self, list: ListEgressRequest - ) -> ListEgressResponse: + async def list_egress(self, list: ListEgressRequest) -> ListEgressResponse: return await self._client.request( SVC, "ListEgress", @@ -112,9 +116,7 @@ async def list_egress( ListEgressResponse, ) - async def stop_egress( - self, stop: StopEgressRequest - ) -> EgressInfo: + async def stop_egress(self, stop: StopEgressRequest) -> EgressInfo: return await self._client.request( SVC, "StopEgress", diff --git a/livekit-api/livekit/api/ingress_service.py b/livekit-api/livekit/api/ingress_service.py index 45eab6af..7b658bb8 100644 --- a/livekit-api/livekit/api/ingress_service.py +++ b/livekit-api/livekit/api/ingress_service.py @@ -1,32 +1,39 @@ import aiohttp -from livekit.protocol.ingress import CreateIngressRequest, IngressInfo, UpdateIngressRequest, ListIngressRequest, DeleteIngressRequest, ListIngressResponse +from livekit.protocol.ingress import ( + CreateIngressRequest, + IngressInfo, + UpdateIngressRequest, + ListIngressRequest, + DeleteIngressRequest, + ListIngressResponse, +) from ._service import Service from .access_token import VideoGrants SVC = "Ingress" """@private""" + class IngressService(Service): """Client for LiveKit Ingress Service API - + Recommended way to use this service is via `livekit.api.LiveKitAPI`: - + ```python from livekit import api lkapi = api.LiveKitAPI() ingress = lkapi.ingress ``` - + Also see https://docs.livekit.io/home/ingress/overview/ """ + def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): super().__init__(session, url, api_key, api_secret) - async def create_ingress( - self, create: CreateIngressRequest - ) -> IngressInfo: + async def create_ingress(self, create: CreateIngressRequest) -> IngressInfo: return await self._client.request( SVC, "CreateIngress", @@ -35,9 +42,7 @@ async def create_ingress( IngressInfo, ) - async def update_ingress( - self, update: UpdateIngressRequest - ) -> IngressInfo: + async def update_ingress(self, update: UpdateIngressRequest) -> IngressInfo: return await self._client.request( SVC, "UpdateIngress", @@ -46,9 +51,7 @@ async def update_ingress( IngressInfo, ) - async def list_ingress( - self, list: ListIngressRequest - ) -> ListIngressResponse: + async def list_ingress(self, list: ListIngressRequest) -> ListIngressResponse: return await self._client.request( SVC, "ListIngress", @@ -57,9 +60,7 @@ async def list_ingress( ListIngressResponse, ) - async def delete_ingress( - self, delete: DeleteIngressRequest - ) -> IngressInfo: + async def delete_ingress(self, delete: DeleteIngressRequest) -> IngressInfo: return await self._client.request( SVC, "DeleteIngress", diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 73e38993..b2f25090 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -10,7 +10,7 @@ class LiveKitAPI: """LiveKit Server API Client - + This class is the main entrypoint, which exposes all services. Usage: @@ -31,7 +31,7 @@ def __init__( timeout: aiohttp.ClientTimeout = aiohttp.ClientTimeout(total=60), # 60 seconds ): """Create a new LiveKitAPI instance. - + Args: url: LiveKit server URL (read from `LIVEKIT_URL` environment variable if not provided) api_key: API key (read from `LIVEKIT_API_KEY` environment variable if not provided) @@ -60,35 +60,35 @@ def __init__( @property def agent_dispatch(self) -> AgentDispatchService: """Instance of the AgentDispatchService - + See `livekit.api.agent_dispatch_service.AgentDispatchService`""" return self._agent_dispatch @property def room(self) -> RoomService: """Instance of the RoomService - + See `livekit.api.room_service.RoomService`""" return self._room @property def ingress(self) -> IngressService: """Instance of the IngressService - + See `livekit.api.ingress_service.IngressService`""" return self._ingress @property def egress(self) -> EgressService: """Instance of the EgressService - + See `livekit.api.egress_service.EgressService`""" return self._egress @property def sip(self) -> SipService: """Instance of the SipService - + See `livekit.api.sip_service.SipService`""" return self._sip diff --git a/livekit-api/livekit/api/room_service.py b/livekit-api/livekit/api/room_service.py index be40f1f5..353a5ec8 100644 --- a/livekit-api/livekit/api/room_service.py +++ b/livekit-api/livekit/api/room_service.py @@ -1,5 +1,23 @@ import aiohttp -from livekit.protocol.room import CreateRoomRequest, ListRoomsRequest, DeleteRoomRequest, ListRoomsResponse, DeleteRoomResponse, ListParticipantsRequest, ListParticipantsResponse, RoomParticipantIdentity, MuteRoomTrackRequest, MuteRoomTrackResponse, UpdateParticipantRequest, UpdateSubscriptionsRequest, SendDataRequest, SendDataResponse, UpdateRoomMetadataRequest, RemoveParticipantResponse, UpdateSubscriptionsResponse +from livekit.protocol.room import ( + CreateRoomRequest, + ListRoomsRequest, + DeleteRoomRequest, + ListRoomsResponse, + DeleteRoomResponse, + ListParticipantsRequest, + ListParticipantsResponse, + RoomParticipantIdentity, + MuteRoomTrackRequest, + MuteRoomTrackResponse, + UpdateParticipantRequest, + UpdateSubscriptionsRequest, + SendDataRequest, + SendDataResponse, + UpdateRoomMetadataRequest, + RemoveParticipantResponse, + UpdateSubscriptionsResponse, +) from livekit.protocol.models import Room, ParticipantInfo from ._service import Service from .access_token import VideoGrants @@ -7,19 +25,21 @@ SVC = "RoomService" """@private""" + class RoomService(Service): """Client for LiveKit RoomService API - + Recommended way to use this service is via `livekit.api.LiveKitAPI`: - + ```python from livekit import api lkapi = api.LiveKitAPI() room_service = lkapi.room ``` - + Also see https://docs.livekit.io/home/server/managing-rooms/ and https://docs.livekit.io/home/server/managing-participants/ """ + def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): @@ -30,7 +50,7 @@ async def create_room( create: CreateRoomRequest, ) -> Room: """Creates a new room with specified configuration. - + Args: create (CreateRoomRequest): arg containing: - name: str - Unique room name @@ -41,7 +61,7 @@ async def create_room( - min_playout_delay: int - Minimum playout delay in ms - max_playout_delay: int - Maximum playout delay in ms - sync_streams: bool - Enable A/V sync for playout delays >200ms - + Returns: Room: The created room object """ @@ -55,11 +75,11 @@ async def create_room( async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse: """Lists active rooms. - + Args: list (ListRoomsRequest): arg containing: - names: list[str] - Optional list of room names to filter by - + Returns: ListRoomsResponse: - rooms: list[Room] - List of active Room objects @@ -74,11 +94,11 @@ async def list_rooms(self, list: ListRoomsRequest) -> ListRoomsResponse: async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse: """Deletes a room and disconnects all participants. - + Args: delete (DeleteRoomRequest): arg containing: - room: str - Name of room to delete - + Returns: DeleteRoomResponse: Empty response object """ @@ -92,12 +112,12 @@ async def delete_room(self, delete: DeleteRoomRequest) -> DeleteRoomResponse: async def update_room_metadata(self, update: UpdateRoomMetadataRequest) -> Room: """Updates a room's [metadata](https://docs.livekit.io/home/client/data/room-metadata/). - + Args: update (UpdateRoomMetadataRequest): arg containing: - room: str - Name of room to update - metadata: str - New metadata to set - + Returns: Room: Updated Room object """ @@ -113,11 +133,11 @@ async def list_participants( self, list: ListParticipantsRequest ) -> ListParticipantsResponse: """Lists all participants in a room. - + Args: list (ListParticipantsRequest): arg containing: - room: str - Name of room to list participants from - + Returns: ListParticipantsResponse: - participants: list[ParticipantInfo] - List of participant details @@ -132,12 +152,12 @@ async def list_participants( async def get_participant(self, get: RoomParticipantIdentity) -> ParticipantInfo: """Gets details about a specific participant. - + Args: get (RoomParticipantIdentity): arg containing: - room: str - Room name - identity: str - Participant identity to look up - + Returns: ParticipantInfo: - sid: str - Participant session ID @@ -163,12 +183,12 @@ async def remove_participant( self, remove: RoomParticipantIdentity ) -> RemoveParticipantResponse: """Removes a participant from a room. - + Args: remove (RoomParticipantIdentity): arg containing: - room: str - Room name - identity: str - Identity of participant to remove - + Returns: RemoveParticipantResponse: Empty response object """ @@ -185,14 +205,14 @@ async def mute_published_track( update: MuteRoomTrackRequest, ) -> MuteRoomTrackResponse: """Mutes or unmutes a participant's published track. - + Args: update (MuteRoomTrackRequest): arg containing: - room: str - Room name - identity: str - Participant identity - track_sid: str - Track session ID to mute - muted: bool - True to mute, False to unmute - + Returns: MuteRoomTrackResponse containing: - track: TrackInfo - Updated track information @@ -209,7 +229,7 @@ async def update_participant( self, update: UpdateParticipantRequest ) -> ParticipantInfo: """Updates a participant's metadata or permissions. - + Args: update (UpdateParticipantRequest): arg containing: - room: str - Room name @@ -218,7 +238,7 @@ async def update_participant( - permission: ParticipantPermission - New permissions - name: str - New display name - attributes: dict[str, str] - Key-value attributes - + Returns: ParticipantInfo: Updated participant information """ @@ -234,7 +254,7 @@ async def update_subscriptions( self, update: UpdateSubscriptionsRequest ) -> UpdateSubscriptionsResponse: """Updates a participant's track subscriptions. - + Args: update (UpdateSubscriptionsRequest): arg containing: - room: str - Room name @@ -242,7 +262,7 @@ async def update_subscriptions( - track_sids: list[str] - Track session IDs - subscribe: bool - True to subscribe, False to unsubscribe - participant_tracks: list[ParticipantTracks] - Participant track mappings - + Returns: UpdateSubscriptionsResponse: Empty response object """ @@ -256,7 +276,7 @@ async def update_subscriptions( async def send_data(self, send: SendDataRequest) -> SendDataResponse: """Sends data to participants in a room. - + Args: send (SendDataRequest): arg containing: - room: str - Room name @@ -264,7 +284,7 @@ async def send_data(self, send: SendDataRequest) -> SendDataResponse: - kind: DataPacket.Kind - RELIABLE or LOSSY delivery - destination_identities: list[str] - Target participant identities - topic: str - Optional topic for the message - + Returns: SendDataResponse: Empty response object """ diff --git a/livekit-api/livekit/api/sip_service.py b/livekit-api/livekit/api/sip_service.py index af8c1329..eee8bcff 100644 --- a/livekit-api/livekit/api/sip_service.py +++ b/livekit-api/livekit/api/sip_service.py @@ -1,30 +1,52 @@ import aiohttp -from livekit.protocol.sip import CreateSIPTrunkRequest, SIPTrunkInfo, CreateSIPInboundTrunkRequest, SIPInboundTrunkInfo, CreateSIPOutboundTrunkRequest, SIPOutboundTrunkInfo, ListSIPTrunkRequest, ListSIPTrunkResponse, ListSIPInboundTrunkRequest, ListSIPInboundTrunkResponse, ListSIPOutboundTrunkRequest, ListSIPOutboundTrunkResponse, DeleteSIPTrunkRequest, SIPDispatchRuleInfo, CreateSIPDispatchRuleRequest, ListSIPDispatchRuleRequest, ListSIPDispatchRuleResponse, DeleteSIPDispatchRuleRequest, CreateSIPParticipantRequest, TransferSIPParticipantRequest, SIPParticipantInfo +from livekit.protocol.sip import ( + CreateSIPTrunkRequest, + SIPTrunkInfo, + CreateSIPInboundTrunkRequest, + SIPInboundTrunkInfo, + CreateSIPOutboundTrunkRequest, + SIPOutboundTrunkInfo, + ListSIPTrunkRequest, + ListSIPTrunkResponse, + ListSIPInboundTrunkRequest, + ListSIPInboundTrunkResponse, + ListSIPOutboundTrunkRequest, + ListSIPOutboundTrunkResponse, + DeleteSIPTrunkRequest, + SIPDispatchRuleInfo, + CreateSIPDispatchRuleRequest, + ListSIPDispatchRuleRequest, + ListSIPDispatchRuleResponse, + DeleteSIPDispatchRuleRequest, + CreateSIPParticipantRequest, + TransferSIPParticipantRequest, + SIPParticipantInfo, +) from ._service import Service from .access_token import VideoGrants, SIPGrants SVC = "SIP" """@private""" + class SipService(Service): """Client for LiveKit SIP Service API - + Recommended way to use this service is via `livekit.api.LiveKitAPI`: - + ```python from livekit import api lkapi = api.LiveKitAPI() sip_service = lkapi.sip ``` """ + def __init__( self, session: aiohttp.ClientSession, url: str, api_key: str, api_secret: str ): super().__init__(session, url, api_key, api_secret) - async def create_sip_trunk( - self, create: CreateSIPTrunkRequest - ) -> SIPTrunkInfo: + async def create_sip_trunk(self, create: CreateSIPTrunkRequest) -> SIPTrunkInfo: return await self._client.request( SVC, "CreateSIPTrunk", @@ -55,9 +77,7 @@ async def create_sip_outbound_trunk( SIPOutboundTrunkInfo, ) - async def list_sip_trunk( - self, list: ListSIPTrunkRequest - ) -> ListSIPTrunkResponse: + async def list_sip_trunk(self, list: ListSIPTrunkRequest) -> ListSIPTrunkResponse: return await self._client.request( SVC, "ListSIPTrunk", @@ -88,9 +108,7 @@ async def list_sip_outbound_trunk( ListSIPOutboundTrunkResponse, ) - async def delete_sip_trunk( - self, delete: DeleteSIPTrunkRequest - ) -> SIPTrunkInfo: + async def delete_sip_trunk(self, delete: DeleteSIPTrunkRequest) -> SIPTrunkInfo: return await self._client.request( SVC, "DeleteSIPTrunk", From 15b0ca18060d488d7947102b391615cf298469f8 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:39:52 -0800 Subject: [PATCH 06/11] pip --- livekit-api/livekit/api/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index 6922de3b..e5af0c97 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -14,6 +14,8 @@ """LiveKit Server APIs for Python +`pip install livekit-api` + Manage rooms, participants, egress, ingress, SIP, and Agent dispatch. Primary entry point is `LiveKitAPI`. From aad0b751f827291d6bdde5f52d4b518000ba870a Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:40:22 -0800 Subject: [PATCH 07/11] twirp --- livekit-api/livekit/api/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/livekit-api/livekit/api/__init__.py b/livekit-api/livekit/api/__init__.py index e5af0c97..6debf821 100644 --- a/livekit-api/livekit/api/__init__.py +++ b/livekit-api/livekit/api/__init__.py @@ -52,6 +52,4 @@ "AccessToken", "TokenVerifier", "WebhookReceiver", - "TwirpError", - "TwirpErrorCode", ] From 94b09f66cabe0f207700a7ee69132fcbc16964f2 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:42:27 -0800 Subject: [PATCH 08/11] clean --- livekit-api/livekit/api/livekit_api.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index b2f25090..2ca04255 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -59,37 +59,27 @@ def __init__( @property def agent_dispatch(self) -> AgentDispatchService: - """Instance of the AgentDispatchService - - See `livekit.api.agent_dispatch_service.AgentDispatchService`""" + """Instance of the AgentDispatchService""" return self._agent_dispatch @property def room(self) -> RoomService: - """Instance of the RoomService - - See `livekit.api.room_service.RoomService`""" + """Instance of the RoomService""" return self._room @property def ingress(self) -> IngressService: - """Instance of the IngressService - - See `livekit.api.ingress_service.IngressService`""" + """Instance of the IngressService""" return self._ingress @property def egress(self) -> EgressService: - """Instance of the EgressService - - See `livekit.api.egress_service.EgressService`""" + """Instance of the EgressService""" return self._egress @property def sip(self) -> SipService: - """Instance of the SipService - - See `livekit.api.sip_service.SipService`""" + """Instance of the SipService""" return self._sip async def aclose(self): From ea4875b01b3e514b36b17d337114b65355e90326 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:50:49 -0800 Subject: [PATCH 09/11] aclose --- livekit-api/livekit/api/livekit_api.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 2ca04255..23473fbc 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -83,5 +83,7 @@ def sip(self) -> SipService: return self._sip async def aclose(self): - """@private""" + """Close the API client + + Call this before your application exits or when the API client is no longer needed.""" await self._session.close() From d861c2ffda924ca751405c05f8fad486e523e2a6 Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 11:51:58 -0800 Subject: [PATCH 10/11] async with --- livekit-api/livekit/api/livekit_api.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 23473fbc..89f48666 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -87,3 +87,15 @@ async def aclose(self): Call this before your application exits or when the API client is no longer needed.""" await self._session.close() + + async def __aenter__(self): + """@private + + Support for `async with`""" + return self + + async def __aexit__(self, exc_type, exc_val, exc_tb): + """@private + + Support for `async with`""" + await self.aclose() From 65cf291d5cd75111b5055a6744c4bb68e60c2fde Mon Sep 17 00:00:00 2001 From: Ben Cherry Date: Wed, 13 Nov 2024 12:56:04 -0800 Subject: [PATCH 11/11] fmt --- livekit-api/livekit/api/livekit_api.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/livekit-api/livekit/api/livekit_api.py b/livekit-api/livekit/api/livekit_api.py index 89f48666..63efda02 100644 --- a/livekit-api/livekit/api/livekit_api.py +++ b/livekit-api/livekit/api/livekit_api.py @@ -84,18 +84,18 @@ def sip(self) -> SipService: async def aclose(self): """Close the API client - + Call this before your application exits or when the API client is no longer needed.""" await self._session.close() - + async def __aenter__(self): """@private - + Support for `async with`""" return self async def __aexit__(self, exc_type, exc_val, exc_tb): """@private - + Support for `async with`""" await self.aclose()