Source code for wxc_sdk.room_tabs

"""
Room tabs API
"""
from collections.abc import Generator
from datetime import datetime
from typing import Optional

from wxc_sdk.api_child import ApiChild
from wxc_sdk.base import ApiModel

__all__ = ['RoomTab', 'RoomTabsApi']

from wxc_sdk.common import RoomType


[docs] class RoomTab(ApiModel): #: A unique identifier for the Room Tab. id: Optional[str] = None #: A unique identifier for the room. room_id: Optional[str] = None #: The room type. room_type: Optional[RoomType] = None #: URL of the Room Tab. Must use https protocol. content_url: Optional[str] = None #: User-friendly name for the room tab. display_name: Optional[str] = None #: The person ID of the person who created this Room Tab. creator_id: Optional[str] = None #: The date and time when the Room Tab was created. created: Optional[datetime] = None
[docs] class RoomTabsApi(ApiChild, base='room/tabs'): """ A Room Tab represents a URL shortcut that is added as a persistent tab to a Webex room (space) tab row. Use this API to list tabs of any Webex room that you belong to. Room Tabs can also be updated to point to a different content URL, or deleted to remove the tab from the room. Just like in the Webex app, you must be a member of the room in order to list its Room Tabs. """
[docs] def list_tabs(self, room_id: str, **params) -> Generator[RoomTab, None, None]: """ Lists all Room Tabs of a room specified by the roomId query parameter. :param room_id: ID of the room for which to list room tabs. :type room_id: str """ if room_id is not None: params['roomId'] = room_id url = self.ep() return self.session.follow_pagination(url=url, model=RoomTab, params=params)
[docs] def create_tab(self, room_id: str, content_url: str, display_name: str) -> RoomTab: """ Add a tab with a specified URL to a room. :param room_id: A unique identifier for the room. :type room_id: str :param content_url: URL of the Room Tab. Must use https protocol. :type content_url: str :param display_name: User-friendly name for the room tab. :type display_name: str """ body = {} if room_id is not None: body['roomId'] = room_id if content_url is not None: body['contentUrl'] = content_url if display_name is not None: body['displayName'] = display_name url = self.ep() data = super().post(url=url, json=body) return RoomTab.model_validate(data)
[docs] def tab_details(self, tab_id: str) -> RoomTab: """ Get details for a Room Tab with the specified room tab ID. :param tab_id: The unique identifier for the Room Tab. :type tab_id: str """ url = self.ep(f'{tab_id}') data = super().get(url=url) return RoomTab.model_validate(data)
[docs] def update_tab(self, tab_id: str, room_id: str, content_url: str, display_name: str) -> RoomTab: """ Updates the content URL of the specified Room Tab ID. :param tab_id: The unique identifier for the Room Tab. :type tab_id: str :param room_id: ID of the room that contains the room tab in question. :type room_id: str :param content_url: Content URL of the Room Tab. URL must use https protocol. :type content_url: str :param display_name: User-friendly name for the room tab. :type display_name: str """ body = {} if room_id is not None: body['roomId'] = room_id if content_url is not None: body['contentUrl'] = content_url if display_name is not None: body['displayName'] = display_name url = self.ep(f'{tab_id}') data = super().put(url=url, json=body) return RoomTab.model_validate(data)
[docs] def delete_tab(self, tab_id: str): """ Deletes a Room Tab with the specified ID. :param tab_id: The unique identifier for the Room Tab to delete. :type tab_id: str """ url = self.ep(f'{tab_id}') super().delete(url=url) return