"""
API for location voicemail settings
"""
from typing import Optional
from ...api_child import ApiChild
from ...base import ApiModel
__all__ = ['LocationVoiceMailSettings', 'LocationVoicemailSettingsApi']
[docs]
class LocationVoiceMailSettings(ApiModel):
"""
voicemail settings for a specific location
"""
#: Set to true to enable voicemail transcription.
voicemail_transcription_enabled: Optional[bool] = None
def update(self) -> dict:
"""
Data for update
:meta private:
"""
return self.model_dump(mode='json', by_alias=True, exclude_unset=True, exclude_none=True)
[docs]
class LocationVoicemailSettingsApi(ApiChild, base='telephony/config/locations'):
"""
location voicemail settings API, for now only enable/disable Vm transcription
"""
def _endpoint(self, *, location_id: str, path: str = None) -> str:
"""
location specific
telephony/config/locations/{locationId}/voicemail
:meta private:
:param location_id: Unique identifier for the location.
:type location_id: str
:param path: additional path
:type: path: str
:return: full endpoint
:rtype: str
"""
path = path and f'/{path}' or ''
ep = self.session.ep(f'telephony/config/locations/{location_id}/voicemail{path}')
return ep
[docs]
def read(self, location_id: str, org_id: str = None) -> LocationVoiceMailSettings:
"""
Get Location Voicemail
Retrieve voicemail settings for a specific location.
Location's voicemail settings allows you to enable voicemail transcription for a specific location.
Retrieving location's voicemail settings requires a full, user or read-only administrator auth token with
a scope of spark-admin:telephony_config_read.
:param location_id: Retrieve access codes details for this location.
:type location_id: str
:param org_id: Retrieve access codes details for a customer location in this organization
:type org_id: str
:return: location voicemail settings
:rtype: :class:`LocationVoiceMailSettings`
"""
params = org_id and {'orgId': org_id} or None
url = self._endpoint(location_id=location_id)
data = self.get(url, params=params)
return LocationVoiceMailSettings.model_validate(data)
[docs]
def update(self, location_id: str, settings: LocationVoiceMailSettings, org_id: str = None):
"""
Update Location Voicemail
Update the voicemail settings for a specific location.
Location voicemail settings allows you to enable voicemail transcription for a specific location.
Updating a location's voicemail settings requires a full administrator or location administrator auth token
with a scope of `spark-admin:telephony_config_write`.
:param location_id: Update voicemail settings for this location.
:type location_id: str
:param settings: new settings
:type settings: :class:`LocationVoiceMailSettings`
:param org_id: Update voicemail settings for this organization.
:type org_id: str
"""
params = org_id and {'orgId': org_id} or None
url = self._endpoint(location_id=location_id)
body = settings.update()
self.put(url, params=params, json=body)