Source code for wxc_sdk.telephony.location.receptionist_contacts

"""
Location Receptionist Directories
"""

from collections.abc import Generator

from ...api_child import ApiChild
from ...common import IdAndName


[docs] class ReceptionistContactsDirectoryApi(ApiChild, base='telephony/config/locations'): """ Webex Calling Location Receptionist Contacts supports creation of directories and assigning custom groups of users to directories for a location within an organization. Receptionist Contact Directories are named custom groups of users. Viewing these read-only directories requires a full or read-only administrator auth token with a scope of spark-admin:telephony_config_read, as the current set of APIs is designed to provide supplemental information for administrators utilizing People Webex Calling APIs. Modifying these directories requires a full administrator auth token with a scope of spark-admin:telephony_config_write. A partner administrator can retrieve or change settings in a customer's organization using the optional OrgId query parameter. """ # TODO: create test cases # TODO: add details(), delete(), and update() def _url(self, location_id: str): return self.ep(f'{location_id}/receptionistContacts/directories')
[docs] def create(self, location_id: str, name: str, contacts: list[str], org_id: str = None) -> str: """ Creates a new Receptionist Contact Directory for a location. Receptionist Contact Directories can be used to create named directories of users. Adding a directory requires a full or write-only administrator auth token with a scope of spark-admin:telephony_config_write. :param location_id: Add a Receptionist Contact Directory to this location. :type location_id: str :param name: Receptionist Contact Directory name. :type name: str :param contacts: Array of user or workspace ids assigned to this Receptionist Contact Directory :type contacts: list[str] :param org_id: Add a Receptionist Contact Directory to this organization. :type org_id: str :return: Receptionist Contact Directory ID. """ url = self._url(location_id) params = org_id and {'orgId': org_id} or None body = {'name': name, 'contacts': [{'personId': contact} for contact in contacts]} data = self.post(url=url, params=params, json=body) return data['id']
[docs] def list(self, location_id: str, org_id: str = None) -> Generator[IdAndName, None, None]: """ List all Receptionist Contact Directories for a location. Receptionist Contact Directories can be used to create named directories of users. Retrieving this list requires a full or read-only administrator auth token with a scope of spark-admin:telephony_config_read. :param location_id: List Receptionist Contact Directories for this location. :type location_id: str :param org_id: List Receptionist Contact Directories for this organization. :type org_id: str :return: Yields IdAndName instances """ url = self._url(location_id) params = org_id and {'orgId': org_id} or None return self.session.follow_pagination(url=url, model=IdAndName, params=params, item_key='directories')
[docs] def delete(self, location_id: str, directory_id: str, org_id: str = None): """ Delete a Receptionist Contact Directory from a location. Receptionist Contact Directories can be used to create named directories of users. Deleting a directory requires a full or write-only administrator auth token with a scope of spark-admin:telephony_config_write. :param location_id: Delete a Receptionist Contact Directory from this location. :param directory_id: ID of directory to delete. :param org_id: Delete a Receptionist Contact Directory from this organization. """ url = f'{self._url(location_id)}/{directory_id}' params = org_id and {'orgId': org_id} or None super().delete(url=url, params=params)