"""
Meetings preferences API
"""
from typing import Optional
from pydantic import TypeAdapter
from ...api_child import ApiChild
from ...base import ApiModel
from ...base import SafeEnum as Enum
from ...common import LinkRelation
__all__ = [
'Audio',
'CallInNumber',
'CoHost',
'DefaultAudioType',
'MeetingPreferenceDetails',
'PersonalMeetingRoomOptions',
'VideoOptions',
'MeetingPreferencesApi',
'OfficeNumber',
'PersonalMeetingRoom',
'SchedulingOptions',
'MeetingsSite',
'Telephony',
'UpdatePersonalMeetingRoomOptionsBody',
'Video',
'VideoDevice',
'UpdateDefaultSiteBody',
]
[docs]
class CoHost(ApiModel):
#: Email address for cohost. This attribute can be modified with the Update Personal Meeting Room Options API.
#: Possible values: john.andersen@example.com
email: Optional[str] = None
#: Display name for cohost. This attribute can be modified with the Update Personal Meeting Room Options API.
#: Possible values: John Andersen
display_name: Optional[str] = None
[docs]
class CallInNumber(ApiModel):
#: Label for call-in number.
#: Possible values: Call-in toll-free number (US/Canada)
label: Optional[str] = None
#: Call-in number to join teleconference from a phone.
#: Possible values: 123456789
call_in_number: Optional[str] = None
#: Type of toll for the call-in number.
#: Possible values: toll, tollFree
toll_type: Optional[str] = None
[docs]
class Telephony(ApiModel):
#: Code for authenticating a user to join teleconference. Users join the teleconference using the call-in number or
#: the global call-in number, followed by the value of the accessCode.
access_code: Optional[str] = None
#: Array of call-in numbers for joining teleconference from a phone.
call_in_numbers: Optional[list[CallInNumber]] = None
#: HATEOAS information of global call-in numbers for joining teleconference from a phone.
links: Optional[list[LinkRelation]] = None
[docs]
class PersonalMeetingRoom(ApiModel):
#: Personal Meeting Room topic. The length of topic must be between 1 and 128 characters. This attribute can be
#: modified with the Update Personal Meeting Room Options API.
topic: Optional[str] = None
#: PIN for joining the room as host. The host PIN must be digits of a predefined length, e.g. 4 digits. It cannot
#: contain sequential digits, such as 1234 or 4321, or repeated digits of the predefined length, such as 1111. The
#: predefined length for host PIN can be viewed in user's My Personal Room page. This attribute can be modified
#: with the Update Personal Meeting Room Options API.
host_pin: Optional[str] = None
#: Personal Meeting Room link. It cannot be empty. Note: This is a read-only attribute.
personal_meeting_room_link: Optional[str] = None
#: Option to automatically lock the Personal Room a number of minutes after a meeting starts. When a room is
#: locked, invitees cannot enter until the owner admits them. The period after which the meeting is locked is
#: defined by autoLockMinutes. This attribute can be modified with the Update Personal Meeting Room Options API.
enabled_auto_lock: Optional[bool] = None
#: Number of minutes after which the Personal Room is locked if enabledAutoLock is enabled. Valid options are 0, 5,
#: 10, 15 and 20. This attribute can be modified with the Update Personal Meeting Room Options API.
auto_lock_minutes: Optional[int] = None
#: Flag to enable notifying the owner of a Personal Room when someone enters the Personal Room lobby while the
#: owner is not in the room. This attribute can be modified with the Update Personal Meeting Room Options API.
enabled_notify_host: Optional[bool] = None
#: Flag allowing other invitees to host a meeting in the Personal Room without the owner. This attribute can be
#: modified with the Update Personal Meeting Room Options API.
support_co_host: Optional[bool] = None
#: Whether or not to allow any attendee with a host account on the target site to become a cohost when joining the
#: Personal Room. The target site is user's preferred site. This attribute can be modified with the Update Personal
#: Meeting Room Options API.
support_anyone_as_co_host: Optional[bool] = None
#: Whether or not to allow the first attendee with a host account on the target site to become a cohost when
#: joining the Personal Room. The target site is user's preferred site. This attribute can be modified with the
#: Update Personal Meeting Room Options API.
allow_first_user_to_be_co_host: Optional[bool] = None
#: Whether or not to allow authenticated video devices in the user's organization to start or join the meeting
#: without a prompt. This attribute can be modified with the Update Personal Meeting Room Options API.
allow_authenticated_devices: Optional[bool] = None
#: Array defining cohosts for the room if both supportAnyoneAsCoHost and allowFirstUserToBeCoHost are false This
#: attribute can be modified with the Update Personal Meeting Room Options API.
co_hosts: Optional[list[CoHost]] = None
#: SIP address for callback from a video system.
sip_address: Optional[str] = None
#: IP address for callback from a video system.
dial_in_ip_address: Optional[str] = None
#: Information for callbacks from meeting to phone or for joining a teleconference using a phone.
telephony: Optional[Telephony] = None
[docs]
class DefaultAudioType(str, Enum):
#: Webex audio. This supports telephony and VoIP.
webex_audio = 'webexAudio'
#: Support only VoIP.
voip_only = 'voipOnly'
#: Other teleconference service. Details are defined in the otherTeleconferenceDescription parameter.
other_teleconference_service = 'otherTeleconferenceService'
#: No audio.
none = 'none'
[docs]
class OfficeNumber(ApiModel):
#: Country code for the phone number. This attribute can be modified with the with the Update Audio Options API.
country_code: Optional[str] = None
#: Phone number. It cannot be longer than 30 characters. This attribute can be modified with the with the Update
#: Audio Options API.
number: Optional[str] = None
#: Flag identifying the phone number as the one that will be used to dial into a teleconference. This attribute can
#: be modified with the with the Update Audio Options API.
enabled_call_in_authentication: Optional[bool] = None
#: Flag to enable/disable Call Me number display on the meeting client. This attribute can be modified with the
#: with the Update Audio Options API. Note: This feature is only effective if the site supports the Call Me
#: feature.
enabled_call_me: Optional[bool] = None
[docs]
class Audio(ApiModel):
#: Default audio type. This attribute can be modified with the with the Update Audio Options API.
default_audio_type: Optional[DefaultAudioType] = None
#: Phone number and other information for the teleconference provider to be used, along with instructions for
#: invitees. This attribute can be modified with the with the Update Audio Options API.
other_teleconference_description: Optional[str] = None
#: Flag to enable/disable global call ins. Note: If the site does not support global call-ins, you cannot set this
#: option. This attribute can be modified with the with the Update Audio Options API.
enabled_global_call_in: Optional[bool] = None
#: Flag to enable/disable call-ins from toll-free numbers. Note: If the site does not support calls from toll-free
#: numbers, you cannot set this option. This attribute can be modified with the with the Update Audio Options API.
enabled_toll_free: Optional[bool] = None
#: Flag to enable/disable automatically connecting to audio using a computer. The meeting host can enable/disable
#: this option. When this option is set to true, the user is automatically connected to audio via a computer when
#: they start or join a Webex Meetings meeting on a desktop. This attribute can be modified with the
#: Update Audio Options API.
enabled_auto_connection: Optional[bool] = None
#: PIN to provide a secondary level of authentication for calls where the host is using the phone and may need to
#: invite additional invitees. It must be exactly 4 digits. It cannot contain sequential digits, such as 1234 or
#: 4321, or repeat a digit 4 times, such as 1111. This attribute can be modified with the with the Update Audio
#: Options API.
audio_pin: Optional[str] = None
#: Office phone number. We recommend that phone numbers be specified to facilitate connecting via audio. This
#: attribute can be modified with the with the Update Audio Options API.
office_number: Optional[OfficeNumber] = None
#: Mobile phone number. We recommend that phone numbers be specified to facilitate connecting via audio. This
#: attribute can be modified with the with the Update Audio Options API.
mobile_number: Optional[OfficeNumber] = None
[docs]
class VideoDevice(ApiModel):
#: Video system name. It cannot be empty. This attribute can be modified with the Update Video Options API.
#: Possible values: device1
device_name: Optional[str] = None
#: Video address. It cannot be empty and must be in valid email format. This attribute can be modified with the
#: Update Video Options API.
#: Possible values: device1@example.com
device_address: Optional[str] = None
#: Flag identifying the device as the default video device. If user's video device list is not empty, one and only
#: one device must be set as default. This attribute can be modified with the Update Video Options API.
#: Possible values:
is_default: Optional[bool] = None
[docs]
class Video(ApiModel):
#: Array of video devices. This attribute can be modified with the Update Video Options API.
video_devices: Optional[list[VideoDevice]] = None
[docs]
class SchedulingOptions(ApiModel):
#: Flag to enable/disable Join Before Host. The period during which invitees can join before the start time is
#: defined by autoLockMinutes. This attribute can be modified with the Update Scheduling Options API. Note: This
#: feature is only effective if the site supports the Join Before Host feature. This attribute can be modified with
#: the Update Scheduling Options API.
enabled_join_before_host: Optional[bool] = None
#: Number of minutes before the start time that an invitee can join a meeting if enabledJoinBeforeHost is true.
#: Valid options are 0, 5, 10 and 15. This attribute can be modified with the Update Scheduling Options API.
join_before_host_minutes: Optional[int] = None
#: Flag to enable/disable the automatic sharing of the meeting recording with invitees when it is available. This
#: attribute can be modified with the Update Scheduling Options API.
enabled_auto_share_recording: Optional[bool] = None
#: Flag to automatically enable Webex Assistant whenever you start a meeting. This attribute can be modified with
#: the Update Scheduling Options API.
enabled_webex_assistant_by_default: Optional[bool] = None
[docs]
class MeetingsSite(ApiModel):
#: Access URL for the site. Note: This is a read-only attribute. The value can be assigned as user's default site
#: with the Update Default Site API.
#: Possible values: site1-example.webex.com
site_url: Optional[str] = None
#: Flag identifying the site as the default site. Users can list meetings and recordings, and create meetings on
#: the default site.
#: Possible values:
default: Optional[bool] = None
[docs]
class UpdatePersonalMeetingRoomOptionsBody(ApiModel):
#: Personal Meeting Room topic to be updated.
topic: Optional[str] = None
#: Updated PIN for joining the room as host. The host PIN must be digits of a predefined length, e.g. 4 digits. It
#: cannot contain sequential digits, such as 1234 or 4321, or repeated digits of the predefined length, such as
#: 1111. The predefined length for host PIN can be viewed in user's My Personal Room page and it can only be
#: changed by site administrator.
host_pin: Optional[str] = None
#: Update for option to automatically lock the Personal Room a number of minutes after a meeting starts. When a
#: room is locked, invitees cannot enter until the owner admits them. The period after which the meeting is locked
#: is defined by autoLockMinutes.
enabled_auto_lock: Optional[bool] = None
#: Updated number of minutes after which the Personal Room is locked if enabledAutoLock is enabled. Valid options
#: are 0, 5, 10, 15 and 20.
auto_lock_minutes: Optional[int] = None
#: Update for flag to enable notifying the owner of a Personal Room when someone enters the Personal Room lobby
#: while the owner is not in the room.
enabled_notify_host: Optional[bool] = None
#: Update for flag allowing other invitees to host a meetingCoHost in the Personal Room without the owner.
support_co_host: Optional[bool] = None
#: Whether or not to allow any attendee with a host account on the target site to become a cohost when joining the
#: Personal Room. The target site is user's preferred site.
support_anyone_as_co_host: Optional[bool] = None
#: Whether or not to allow the first attendee with a host account on the target site to become a cohost when
#: joining the Personal Room. The target site is user's preferred site.
allow_first_user_to_be_co_host: Optional[bool] = None
#: Whether or not to allow authenticated video devices in the user's organization to start or join the meeting
#: without a prompt.
allow_authenticated_devices: Optional[bool] = None
#: Updated array defining cohosts for the room if both supportAnyoneAsCoHost and allowFirstUserToBeCoHost are false
co_hosts: Optional[list[CoHost]] = None
[docs]
class PersonalMeetingRoomOptions(UpdatePersonalMeetingRoomOptionsBody):
#: Personal Meeting Room link. It cannot be empty. Note: This is a read-only attribute.
personal_meeting_room_link: Optional[str] = None
#: SIP address for callback from a video system.
sip_address: Optional[str] = None
#: IP address for callback from a video system.
dial_in_ip_address: Optional[str] = None
#: Information for callbacks from meeting to phone or for joining a teleconference using a phone.
telephony: Optional[Telephony] = None
[docs]
class MeetingPreferenceDetails(ApiModel):
#: Personal Meeting Room options.
personal_meeting_room: Optional[PersonalMeetingRoom] = None
#: Audio Preferences. Note: These audio settings do not apply to Personal Room meetings
audio: Optional[Audio] = None
#: Information for video conferencing systems used to connect to Webex meetings. Note: The Call My Video System
#: feature is available only if it has been purchased for your site and your administrator has enabled it.
video: Optional[Video] = None
#: Meeting scheduling options.
scheduling_options: Optional[SchedulingOptions] = None
#: List of user's Webex meeting sites including default site.
sites: Optional[list[MeetingsSite]] = None
[docs]
class VideoOptions(ApiModel):
#: Array of video devices. This attribute can be modified with the Update Video Options API.
video_devices: Optional[list[VideoDevice]] = None
[docs]
class UpdateDefaultSiteBody(ApiModel):
#: Access URL for the site.
site_url: Optional[str] = None
[docs]
class MeetingPreferencesApi(ApiChild, base='meetingPreferences'):
"""
This API manages a user's meeting preferences, including Personal Meeting Room settings, video and audio settings,
meeting scheduling options, and site settings.
Refer to the Meetings API Scopes section of Meetings Overview for scopes required for each API.
"""
[docs]
def details(self, user_email: str = None, site_url: str = None) -> MeetingPreferenceDetails:
"""
Retrieves meeting preferences for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the required admin-level scopes. If set, the admin may specify the email of a user in a site
they manage and the API will return details of the meeting preferences for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
url = self.ep()
data = super().get(url=url, params=params)
return MeetingPreferenceDetails.model_validate(data)
[docs]
def personal_meeting_room_options(self, user_email: str = None, site_url: str = None) -> PersonalMeetingRoomOptions:
"""
Retrieves the Personal Meeting Room options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will return details of the Personal Meeting Room options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
url = self.ep('personalMeetingRoom')
data = super().get(url=url, params=params)
return PersonalMeetingRoomOptions.model_validate(data)
[docs]
def update_personal_meeting_room_options(
self,
topic: str,
host_pin: str,
enabled_auto_lock: bool,
auto_lock_minutes: int,
enabled_notify_host: bool,
support_co_host: bool,
co_hosts: CoHost,
user_email: str = None,
site_url: str = None,
support_anyone_as_co_host: bool = None,
allow_first_user_to_be_co_host: bool = None,
allow_authenticated_devices: bool = None,
) -> PersonalMeetingRoomOptions:
"""
Update a single meeting
:param topic: Personal Meeting Room topic to be updated.
:type topic: str
:param host_pin: Updated PIN for joining the room as host. The host PIN must be digits of a predefined length,
e.g. 4 digits. It cannot contain sequential digits, such as 1234 or 4321, or repeated digits of the
predefined length, such as 1111. The predefined length for host PIN can be viewed in user's My Personal
Room page and it can only be changed by site administrator.
:type host_pin: str
:param enabled_auto_lock: Update for option to automatically lock the Personal Room a number of minutes after a
meeting starts. When a room is locked, invitees cannot enter until the owner admits them. The period after
which the meeting is locked is defined by autoLockMinutes.
:type enabled_auto_lock: bool
:param auto_lock_minutes: Updated number of minutes after which the Personal Room is locked if enabledAutoLock
is enabled. Valid options are 0, 5, 10, 15 and 20.
:type auto_lock_minutes: int
:param enabled_notify_host: Update for flag to enable notifying the owner of a Personal Room when someone
enters the Personal Room lobby while the owner is not in the room.
:type enabled_notify_host: bool
:param support_co_host: Update for flag allowing other invitees to host a meetingCoHost in the Personal Room
without the owner.
:type support_co_host: bool
:param co_hosts: Updated array defining cohosts for the room if both supportAnyoneAsCoHost and
allowFirstUserToBeCoHost are false
:type co_hosts: CoHost
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will update Personal Meeting Room options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
:param support_anyone_as_co_host: Whether or not to allow any attendee with a host account on the target site
to become a cohost when joining the Personal Room. The target site is user's preferred site.
:type support_anyone_as_co_host: bool
:param allow_first_user_to_be_co_host: Whether or not to allow the first attendee with a host account on the
target site to become a cohost when joining the Personal Room. The target site is user's preferred site.
:type allow_first_user_to_be_co_host: bool
:param allow_authenticated_devices: Whether or not to allow authenticated video devices in the user's
organization to start or join the meeting without a prompt.
:type allow_authenticated_devices: bool
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
body = UpdatePersonalMeetingRoomOptionsBody()
if topic is not None:
body.topic = topic
if host_pin is not None:
body.host_pin = host_pin
if enabled_auto_lock is not None:
body.enabled_auto_lock = enabled_auto_lock
if auto_lock_minutes is not None:
body.auto_lock_minutes = auto_lock_minutes
if enabled_notify_host is not None:
body.enabled_notify_host = enabled_notify_host
if support_co_host is not None:
body.support_co_host = support_co_host
if co_hosts is not None:
body.co_hosts = co_hosts
if support_anyone_as_co_host is not None:
body.support_anyone_as_co_host = support_anyone_as_co_host
if allow_first_user_to_be_co_host is not None:
body.allow_first_user_to_be_co_host = allow_first_user_to_be_co_host
if allow_authenticated_devices is not None:
body.allow_authenticated_devices = allow_authenticated_devices
url = self.ep('personalMeetingRoom')
data = super().put(url=url, params=params, data=body.model_dump_json())
return PersonalMeetingRoomOptions.model_validate(data)
[docs]
def audio_options(self, user_email: str = None, site_url: str = None) -> Audio:
"""
Retrieves audio options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will return details of the audio options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
url = self.ep('audio')
data = super().get(url=url, params=params)
return Audio.model_validate(data)
[docs]
def update_audio_options(
self,
user_email: str = None,
site_url: str = None,
default_audio_type: DefaultAudioType = None,
other_teleconference_description: str = None,
enabled_global_call_in: bool = None,
enabled_toll_free: bool = None,
enabled_auto_connection: bool = None,
audio_pin: str = None,
office_number: OfficeNumber = None,
mobile_number: OfficeNumber = None,
) -> Audio:
"""
Updates audio options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will update audio options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved
from /meetingPreferences/sites.
:type site_url: str
:param default_audio_type: Default audio type. This attribute can be modified with the with the Update Audio
Options API.
:type default_audio_type: DefaultAudioType
:param other_teleconference_description: Phone number and other information for the teleconference provider to
be used, along with instructions for invitees. This attribute can be modified with the with the Update
Audio Options API.
:type other_teleconference_description: str
:param enabled_global_call_in: Flag to enable/disable global call ins. Note: If the site does not support
global call-ins, you cannot set this option. This attribute can be modified with the with the Update Audio
Options API.
:type enabled_global_call_in: bool
:param enabled_toll_free: Flag to enable/disable call-ins from toll-free numbers. Note: If the site does not
support calls from toll-free numbers, you cannot set this option. This attribute can be modified with the
with the Update Audio Options API.
:type enabled_toll_free: bool
:param enabled_auto_connection: Flag to enable/disable automatically connecting to audio using a computer. The
meeting host can enable/disable this option. When this option is set to true, the user is automatically
connected to audio via a computer when they start or join a Webex Meetings meeting on a desktop. This
attribute can be modified with the Update Audio Options API.
:type enabled_auto_connection: bool
:param audio_pin: PIN to provide a secondary level of authentication for calls where the host is using the
phone and may need to invite additional invitees. It must be exactly 4 digits. It cannot contain sequential
digits, such as 1234 or 4321, or repeat a digit 4 times, such as 1111. This attribute can be modified with
the with the Update Audio Options API.
:type audio_pin: str
:param office_number: Office phone number. We recommend that phone numbers be specified to facilitate
connecting via audio. This attribute can be modified with the with the Update Audio Options API.
:type office_number: OfficeNumber
:param mobile_number: Mobile phone number. We recommend that phone numbers be specified to facilitate
connecting via audio. This attribute can be modified with the with the Update Audio Options API.
:type mobile_number: OfficeNumber
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
body = Audio()
if default_audio_type is not None:
body.default_audio_type = default_audio_type
if other_teleconference_description is not None:
body.other_teleconference_description = other_teleconference_description
if enabled_global_call_in is not None:
body.enabled_global_call_in = enabled_global_call_in
if enabled_toll_free is not None:
body.enabled_toll_free = enabled_toll_free
if enabled_auto_connection is not None:
body.enabled_auto_connection = enabled_auto_connection
if audio_pin is not None:
body.audio_pin = audio_pin
if office_number is not None:
body.office_number = office_number
if mobile_number is not None:
body.mobile_number = mobile_number
url = self.ep('audio')
data = super().put(url=url, params=params, data=body.model_dump_json())
return Audio.model_validate(data)
[docs]
def video_options(self, user_email: str = None, site_url: str = None) -> list[VideoDevice]:
"""
Retrieves video options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will return details of the video options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved using Get Site List.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
url = self.ep('video')
data = super().get(url=url, params=params)
return TypeAdapter(list[VideoDevice]).validate_python(data['videoDevices'])
[docs]
def update_video_options(
self, video_devices: VideoDevice, user_email: str = None, site_url: str = None
) -> list[VideoDevice]:
"""
Updates video options for the authenticated user.
:param video_devices: Array of video devices. If the array is not empty, one device and no more than one
devices must be set as default device.
:type video_devices: VideoDevice
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will update video options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
body = VideoOptions()
if video_devices is not None:
body.video_devices = video_devices
url = self.ep('video')
data = super().put(url=url, params=params, data=body.model_dump_json())
return TypeAdapter(list[VideoDevice]).validate_python(data['videoDevices'])
[docs]
def scheduling_options(self, user_email: str = None, site_url: str = None) -> SchedulingOptions:
"""
Retrieves scheduling options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will return details of the scheduling options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
url = self.ep('schedulingOptions')
data = super().get(url=url, params=params)
return SchedulingOptions.model_validate(data)
[docs]
def update_scheduling_options(
self,
user_email: str = None,
site_url: str = None,
enabled_join_before_host: bool = None,
join_before_host_minutes: int = None,
enabled_auto_share_recording: bool = None,
enabled_webex_assistant_by_default: bool = None,
) -> SchedulingOptions:
"""
Updates scheduling options for the authenticated user.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will update scheduling options for that user.
:type user_email: str
:param site_url: URL of the Webex site to query. For individual use, if siteUrl is not specified, the query
will use the default site of the user. For admin use, if siteUrl is not specified, the query will use the
default site for the admin's authorization token used to make the call. In the case where the user belongs
to a site different than the admin’s default site, the admin can set the site to query using the siteUrl
parameter. All available Webex sites and default site of a user can be retrieved from
/meetingPreferences/sites.
:type site_url: str
:param enabled_join_before_host: Flag to enable/disable Join Before Host. The period during which invitees can
join before the start time is defined by autoLockMinutes. This attribute can be modified with the Update
Scheduling Options API. Note: This feature is only effective if the site supports the Join Before Host
feature. This attribute can be modified with the Update Scheduling Options API.
:type enabled_join_before_host: bool
:param join_before_host_minutes: Number of minutes before the start time that an invitee can join a meeting if
enabledJoinBeforeHost is true. Valid options are 0, 5, 10 and 15. This attribute can be modified with the
Update Scheduling Options API.
:type join_before_host_minutes: int
:param enabled_auto_share_recording: Flag to enable/disable the automatic sharing of the meeting recording with
invitees when it is available. This attribute can be modified with the Update Scheduling Options API.
:type enabled_auto_share_recording: bool
:param enabled_webex_assistant_by_default: Flag to automatically enable Webex Assistant whenever you start a
meeting. This attribute can be modified with the Update Scheduling Options API.
:type enabled_webex_assistant_by_default: bool
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
if site_url is not None:
params['siteUrl'] = site_url
body = SchedulingOptions()
if enabled_join_before_host is not None:
body.enabled_join_before_host = enabled_join_before_host
if join_before_host_minutes is not None:
body.join_before_host_minutes = join_before_host_minutes
if enabled_auto_share_recording is not None:
body.enabled_auto_share_recording = enabled_auto_share_recording
if enabled_webex_assistant_by_default is not None:
body.enabled_webex_assistant_by_default = enabled_webex_assistant_by_default
url = self.ep('schedulingOptions')
data = super().put(url=url, params=params, data=body.model_dump_json())
return SchedulingOptions.model_validate(data)
[docs]
def site_list(self, user_email: str = None) -> list[MeetingsSite]:
"""
Retrieves the list of Webex sites that the authenticated user is set up to use.
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user and the API will
return the list of Webex sites for that user.
:type user_email: str
"""
params = {}
if user_email is not None:
params['userEmail'] = user_email
url = self.ep('sites')
data = super().get(url=url, params=params)
return TypeAdapter(list[MeetingsSite]).validate_python(data['sites'])
[docs]
def update_default_site(self, default_site: bool, site_url: str, user_email: str = None) -> MeetingsSite:
"""
Updates the default site for the authenticated user.
:param default_site: Whether or not to change user's default site. Note: defaultSite should be set to true for
the user's single default site
:type default_site: bool
:param site_url: Access URL for the site.
:type site_url: str
:param user_email: Email address for the user. This parameter is only used if the user or application calling
the API has the admin-level scopes. If set, the admin may specify the email of a user in a site they manage
and the API will update default site for that user.
:type user_email: str
"""
params = dict()
params['defaultSite'] = str(default_site).lower()
if user_email is not None:
params['userEmail'] = user_email
body = UpdateDefaultSiteBody()
if site_url is not None:
body.site_url = site_url
url = self.ep('sites')
data = super().put(url=url, params=params, data=body.model_dump_json())
return MeetingsSite.model_validate(data)