wxcli 1.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wxcli/__init__.py +4 -0
- wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
- wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
- wxcli/_playbook/.claude/rules/cleanup.md +29 -0
- wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
- wxcli/_playbook/.claude/rules/org-health.md +14 -0
- wxcli/_playbook/.claude/settings.json +8 -0
- wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
- wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
- wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
- wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
- wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
- wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
- wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
- wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
- wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
- wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
- wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
- wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
- wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
- wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
- wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
- wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
- wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
- wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
- wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
- wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
- wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
- wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
- wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
- wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
- wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
- wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
- wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
- wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
- wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
- wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
- wxcli/_playbook/CLAUDE.md +373 -0
- wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
- wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
- wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
- wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
- wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
- wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
- wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
- wxcli/_playbook/docs/reference/admin-partner.md +357 -0
- wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
- wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
- wxcli/_playbook/docs/reference/authentication.md +965 -0
- wxcli/_playbook/docs/reference/call-control.md +1205 -0
- wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
- wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
- wxcli/_playbook/docs/reference/call-routing.md +2304 -0
- wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
- wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
- wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
- wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
- wxcli/_playbook/docs/reference/devices-core.md +1869 -0
- wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
- wxcli/_playbook/docs/reference/devices-platform.md +467 -0
- wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
- wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
- wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
- wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
- wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
- wxcli/_playbook/docs/reference/meetings-content.md +473 -0
- wxcli/_playbook/docs/reference/meetings-core.md +903 -0
- wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
- wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
- wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
- wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
- wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
- wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
- wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
- wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
- wxcli/_playbook/docs/reference/provisioning.md +1366 -0
- wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
- wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
- wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
- wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
- wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
- wxcli/_version.py +24 -0
- wxcli/auth.py +137 -0
- wxcli/commands/__init__.py +0 -0
- wxcli/commands/_registry.py +181 -0
- wxcli/commands/activation_email.py +103 -0
- wxcli/commands/admin_recordings.py +585 -0
- wxcli/commands/analytics.py +105 -0
- wxcli/commands/announcement_playlists.py +219 -0
- wxcli/commands/announcements.py +519 -0
- wxcli/commands/archive_users.py +36 -0
- wxcli/commands/attachment_actions.py +60 -0
- wxcli/commands/audit_events.py +83 -0
- wxcli/commands/authorizations.py +113 -0
- wxcli/commands/auto_attendant.py +642 -0
- wxcli/commands/broadworks_billing_reports.py +126 -0
- wxcli/commands/broadworks_enterprises.py +160 -0
- wxcli/commands/broadworks_subscribers.py +319 -0
- wxcli/commands/broadworks_workspaces.py +108 -0
- wxcli/commands/call_controls.py +1304 -0
- wxcli/commands/call_park.py +494 -0
- wxcli/commands/call_pickup.py +229 -0
- wxcli/commands/call_queue.py +1878 -0
- wxcli/commands/call_recording.py +707 -0
- wxcli/commands/call_routing.py +1610 -0
- wxcli/commands/call_settings_for_me_phase_5.py +212 -0
- wxcli/commands/caller_reputation.py +169 -0
- wxcli/commands/calling_service.py +305 -0
- wxcli/commands/cc_address_book.py +770 -0
- wxcli/commands/cc_agent_greetings.py +242 -0
- wxcli/commands/cc_agent_summaries.py +39 -0
- wxcli/commands/cc_agent_wellbeing.py +216 -0
- wxcli/commands/cc_agents.py +425 -0
- wxcli/commands/cc_ai_assistant.py +55 -0
- wxcli/commands/cc_ai_feature.py +294 -0
- wxcli/commands/cc_audio_files.py +149 -0
- wxcli/commands/cc_auto_csat.py +311 -0
- wxcli/commands/cc_aux_code.py +458 -0
- wxcli/commands/cc_business_hour.py +353 -0
- wxcli/commands/cc_call_monitoring.py +228 -0
- wxcli/commands/cc_callbacks.py +194 -0
- wxcli/commands/cc_campaign.py +212 -0
- wxcli/commands/cc_captures.py +39 -0
- wxcli/commands/cc_contact_list.py +169 -0
- wxcli/commands/cc_contact_number.py +295 -0
- wxcli/commands/cc_data_sources.py +235 -0
- wxcli/commands/cc_desktop_layout.py +380 -0
- wxcli/commands/cc_desktop_profile.py +322 -0
- wxcli/commands/cc_dial_number.py +511 -0
- wxcli/commands/cc_dial_plan.py +347 -0
- wxcli/commands/cc_dnc.py +101 -0
- wxcli/commands/cc_entry_point.py +545 -0
- wxcli/commands/cc_ewt.py +51 -0
- wxcli/commands/cc_flow.py +477 -0
- wxcli/commands/cc_global_vars.py +430 -0
- wxcli/commands/cc_holiday_list.py +335 -0
- wxcli/commands/cc_journey.py +1261 -0
- wxcli/commands/cc_legacy_flows.py +49 -0
- wxcli/commands/cc_multimedia_profile.py +436 -0
- wxcli/commands/cc_notification.py +51 -0
- wxcli/commands/cc_outdial_ani.py +604 -0
- wxcli/commands/cc_overrides.py +341 -0
- wxcli/commands/cc_queue.py +1083 -0
- wxcli/commands/cc_queue_stats.py +55 -0
- wxcli/commands/cc_realtime.py +51 -0
- wxcli/commands/cc_resource_collection.py +312 -0
- wxcli/commands/cc_search.py +46 -0
- wxcli/commands/cc_site.py +400 -0
- wxcli/commands/cc_skill.py +350 -0
- wxcli/commands/cc_skill_profile.py +289 -0
- wxcli/commands/cc_subscriptions.py +426 -0
- wxcli/commands/cc_summaries.py +130 -0
- wxcli/commands/cc_tasks.py +844 -0
- wxcli/commands/cc_team.py +325 -0
- wxcli/commands/cc_user_profiles.py +349 -0
- wxcli/commands/cc_users.py +701 -0
- wxcli/commands/cc_work_types.py +363 -0
- wxcli/commands/cdr.py +89 -0
- wxcli/commands/classifications.py +38 -0
- wxcli/commands/cleanup.py +1427 -0
- wxcli/commands/client_settings.py +72 -0
- wxcli/commands/conference.py +328 -0
- wxcli/commands/configure.py +72 -0
- wxcli/commands/converged_recordings.py +347 -0
- wxcli/commands/converged_recordings_export.py +310 -0
- wxcli/commands/cq_playlists.py +42 -0
- wxcli/commands/cucm.py +2794 -0
- wxcli/commands/cucm_config.py +129 -0
- wxcli/commands/customer_assist.py +373 -0
- wxcli/commands/data_sources.py +227 -0
- wxcli/commands/dect_devices.py +787 -0
- wxcli/commands/device_configurations.py +77 -0
- wxcli/commands/device_dynamic_settings.py +320 -0
- wxcli/commands/device_settings.py +1489 -0
- wxcli/commands/devices.py +280 -0
- wxcli/commands/domains.py +142 -0
- wxcli/commands/ecm.py +178 -0
- wxcli/commands/emergency_services.py +827 -0
- wxcli/commands/events.py +83 -0
- wxcli/commands/external_voicemail.py +52 -0
- wxcli/commands/groups.py +206 -0
- wxcli/commands/guest_management.py +76 -0
- wxcli/commands/hds.py +340 -0
- wxcli/commands/hot_desk.py +67 -0
- wxcli/commands/hot_desking_members.py +118 -0
- wxcli/commands/hot_desking_portal.py +124 -0
- wxcli/commands/hunt_group.py +577 -0
- wxcli/commands/hybrid_clusters.py +71 -0
- wxcli/commands/hybrid_connectors.py +67 -0
- wxcli/commands/identity_org.py +159 -0
- wxcli/commands/init_playbook.py +155 -0
- wxcli/commands/licenses.py +106 -0
- wxcli/commands/live_monitoring.py +40 -0
- wxcli/commands/location_call_handling.py +577 -0
- wxcli/commands/location_schedules.py +341 -0
- wxcli/commands/location_settings.py +1297 -0
- wxcli/commands/location_voicemail.py +494 -0
- wxcli/commands/locations.py +336 -0
- wxcli/commands/meeting_captions.py +110 -0
- wxcli/commands/meeting_chats.py +63 -0
- wxcli/commands/meeting_invitees.py +234 -0
- wxcli/commands/meeting_messages.py +28 -0
- wxcli/commands/meeting_participants.py +278 -0
- wxcli/commands/meeting_polls.py +111 -0
- wxcli/commands/meeting_preferences.py +515 -0
- wxcli/commands/meeting_qa.py +78 -0
- wxcli/commands/meeting_qualities.py +43 -0
- wxcli/commands/meeting_reports.py +101 -0
- wxcli/commands/meeting_session_types.py +105 -0
- wxcli/commands/meeting_site.py +57 -0
- wxcli/commands/meeting_slido.py +44 -0
- wxcli/commands/meeting_summaries.py +92 -0
- wxcli/commands/meeting_tracking_codes.py +233 -0
- wxcli/commands/meeting_transcripts.py +230 -0
- wxcli/commands/meetings.py +1997 -0
- wxcli/commands/memberships.py +164 -0
- wxcli/commands/messages.py +213 -0
- wxcli/commands/mode_management.py +244 -0
- wxcli/commands/my_call_settings.py +3577 -0
- wxcli/commands/numbers.py +405 -0
- wxcli/commands/operating_modes.py +410 -0
- wxcli/commands/org_contacts.py +284 -0
- wxcli/commands/org_health_cli.py +55 -0
- wxcli/commands/org_settings.py +71 -0
- wxcli/commands/organizations.py +83 -0
- wxcli/commands/paging_group.py +257 -0
- wxcli/commands/partner_admins.py +141 -0
- wxcli/commands/partner_reports.py +188 -0
- wxcli/commands/partner_tags.py +216 -0
- wxcli/commands/people.py +279 -0
- wxcli/commands/person_call_settings.py +71 -0
- wxcli/commands/pstn.py +280 -0
- wxcli/commands/recording_report.py +154 -0
- wxcli/commands/report_templates.py +38 -0
- wxcli/commands/reports.py +144 -0
- wxcli/commands/resource_group_memberships.py +160 -0
- wxcli/commands/resource_groups.py +67 -0
- wxcli/commands/roles.py +63 -0
- wxcli/commands/room_tabs.py +160 -0
- wxcli/commands/rooms.py +225 -0
- wxcli/commands/scim_bulk.py +46 -0
- wxcli/commands/scim_groups.py +246 -0
- wxcli/commands/scim_schemas.py +82 -0
- wxcli/commands/scim_users.py +283 -0
- wxcli/commands/security_audit.py +54 -0
- wxcli/commands/service_apps.py +51 -0
- wxcli/commands/single_number_reach.py +209 -0
- wxcli/commands/team_memberships.py +155 -0
- wxcli/commands/teams.py +153 -0
- wxcli/commands/ucm_profile.py +42 -0
- wxcli/commands/update.py +219 -0
- wxcli/commands/user_settings.py +5116 -0
- wxcli/commands/video_mesh.py +1090 -0
- wxcli/commands/virtual_extensions.py +502 -0
- wxcli/commands/virtual_line_settings.py +2072 -0
- wxcli/commands/webhooks.py +176 -0
- wxcli/commands/wholesale_billing_reports.py +147 -0
- wxcli/commands/wholesale_provisioning.py +523 -0
- wxcli/commands/workspace_locations.py +339 -0
- wxcli/commands/workspace_metrics.py +103 -0
- wxcli/commands/workspace_personalization.py +70 -0
- wxcli/commands/workspace_settings.py +3347 -0
- wxcli/commands/workspaces.py +279 -0
- wxcli/commands/xapi.py +114 -0
- wxcli/config.py +139 -0
- wxcli/errors.py +77 -0
- wxcli/main.py +210 -0
- wxcli/migration/CLAUDE.md +106 -0
- wxcli/migration/__init__.py +1 -0
- wxcli/migration/advisory/CLAUDE.md +196 -0
- wxcli/migration/advisory/__init__.py +46 -0
- wxcli/migration/advisory/advisor.py +107 -0
- wxcli/migration/advisory/advisory_patterns.py +2552 -0
- wxcli/migration/advisory/recommendation_rules.py +835 -0
- wxcli/migration/cucm/CLAUDE.md +74 -0
- wxcli/migration/cucm/__init__.py +5 -0
- wxcli/migration/cucm/connection.py +265 -0
- wxcli/migration/cucm/discovery.py +225 -0
- wxcli/migration/cucm/extractors/__init__.py +1 -0
- wxcli/migration/cucm/extractors/announcements.py +92 -0
- wxcli/migration/cucm/extractors/base.py +90 -0
- wxcli/migration/cucm/extractors/device_profiles.py +98 -0
- wxcli/migration/cucm/extractors/devices.py +193 -0
- wxcli/migration/cucm/extractors/e911.py +103 -0
- wxcli/migration/cucm/extractors/features.py +309 -0
- wxcli/migration/cucm/extractors/helpers.py +73 -0
- wxcli/migration/cucm/extractors/informational.py +295 -0
- wxcli/migration/cucm/extractors/locations.py +221 -0
- wxcli/migration/cucm/extractors/moh.py +100 -0
- wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
- wxcli/migration/cucm/extractors/routing.py +493 -0
- wxcli/migration/cucm/extractors/shared_lines.py +146 -0
- wxcli/migration/cucm/extractors/templates.py +229 -0
- wxcli/migration/cucm/extractors/tier4.py +173 -0
- wxcli/migration/cucm/extractors/users.py +240 -0
- wxcli/migration/cucm/extractors/voicemail.py +243 -0
- wxcli/migration/cucm/extractors/workspaces.py +88 -0
- wxcli/migration/cucm/unity_connection.py +304 -0
- wxcli/migration/execute/CLAUDE.md +372 -0
- wxcli/migration/execute/__init__.py +303 -0
- wxcli/migration/execute/batch.py +277 -0
- wxcli/migration/execute/dependency.py +483 -0
- wxcli/migration/execute/engine.py +964 -0
- wxcli/migration/execute/handlers.py +2232 -0
- wxcli/migration/execute/planner.py +1939 -0
- wxcli/migration/execute/runtime.py +571 -0
- wxcli/migration/export/CLAUDE.md +49 -0
- wxcli/migration/export/__init__.py +8 -0
- wxcli/migration/export/csv_export.py +126 -0
- wxcli/migration/export/deployment_plan.py +479 -0
- wxcli/migration/export/json_export.py +60 -0
- wxcli/migration/models.py +941 -0
- wxcli/migration/phone_models.py +50 -0
- wxcli/migration/preflight/CLAUDE.md +52 -0
- wxcli/migration/preflight/__init__.py +89 -0
- wxcli/migration/preflight/checks.py +911 -0
- wxcli/migration/preflight/runner.py +293 -0
- wxcli/migration/rate_limiter.py +144 -0
- wxcli/migration/report/CLAUDE.md +245 -0
- wxcli/migration/report/__init__.py +7 -0
- wxcli/migration/report/appendix.py +2437 -0
- wxcli/migration/report/assembler.py +183 -0
- wxcli/migration/report/charts.py +263 -0
- wxcli/migration/report/executive.py +776 -0
- wxcli/migration/report/explainer.py +704 -0
- wxcli/migration/report/helpers.py +74 -0
- wxcli/migration/report/ingest.py +152 -0
- wxcli/migration/report/notice_templates.py +192 -0
- wxcli/migration/report/score.py +375 -0
- wxcli/migration/report/styles.py +1052 -0
- wxcli/migration/report/user_diff.py +1052 -0
- wxcli/migration/report/user_notice.py +425 -0
- wxcli/migration/state.py +139 -0
- wxcli/migration/store.py +860 -0
- wxcli/migration/transform/CLAUDE.md +107 -0
- wxcli/migration/transform/__init__.py +12 -0
- wxcli/migration/transform/analysis_pipeline.py +453 -0
- wxcli/migration/transform/analyzers/__init__.py +142 -0
- wxcli/migration/transform/analyzers/css_permission.py +189 -0
- wxcli/migration/transform/analyzers/css_routing.py +335 -0
- wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
- wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
- wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
- wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
- wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
- wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
- wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
- wxcli/migration/transform/analyzers/missing_data.py +300 -0
- wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
- wxcli/migration/transform/analyzers/shared_line.py +170 -0
- wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
- wxcli/migration/transform/analyzers/workspace_license.py +212 -0
- wxcli/migration/transform/cross_reference.py +1136 -0
- wxcli/migration/transform/cucm_pattern.py +246 -0
- wxcli/migration/transform/decisions.py +301 -0
- wxcli/migration/transform/e164.py +145 -0
- wxcli/migration/transform/engine.py +256 -0
- wxcli/migration/transform/mappers/CLAUDE.md +123 -0
- wxcli/migration/transform/mappers/__init__.py +76 -0
- wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
- wxcli/migration/transform/mappers/base.py +190 -0
- wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
- wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
- wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
- wxcli/migration/transform/mappers/css_mapper.py +868 -0
- wxcli/migration/transform/mappers/dect_mapper.py +367 -0
- wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
- wxcli/migration/transform/mappers/device_mapper.py +227 -0
- wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
- wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
- wxcli/migration/transform/mappers/e911_mapper.py +129 -0
- wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
- wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
- wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
- wxcli/migration/transform/mappers/line_mapper.py +310 -0
- wxcli/migration/transform/mappers/location_mapper.py +235 -0
- wxcli/migration/transform/mappers/moh_mapper.py +114 -0
- wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
- wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
- wxcli/migration/transform/mappers/routing_mapper.py +821 -0
- wxcli/migration/transform/mappers/snr_mapper.py +201 -0
- wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
- wxcli/migration/transform/mappers/user_mapper.py +264 -0
- wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
- wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
- wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
- wxcli/migration/transform/normalizers.py +2008 -0
- wxcli/migration/transform/pattern_converter.py +106 -0
- wxcli/migration/transform/pipeline.py +271 -0
- wxcli/migration/transform/rules.py +255 -0
- wxcli/org_health/CLAUDE.md +63 -0
- wxcli/org_health/__init__.py +7 -0
- wxcli/org_health/analyze.py +93 -0
- wxcli/org_health/checks.py +458 -0
- wxcli/org_health/collector.py +62 -0
- wxcli/org_health/models.py +78 -0
- wxcli/org_health/report.py +300 -0
- wxcli/output.py +101 -0
- wxcli-1.2.0.dist-info/METADATA +505 -0
- wxcli-1.2.0.dist-info/RECORD +413 -0
- wxcli-1.2.0.dist-info/WHEEL +5 -0
- wxcli-1.2.0.dist-info/entry_points.txt +2 -0
- wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
- wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
- wxcli-1.2.0.dist-info/scm_version.json +8 -0
- wxcli-1.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,903 @@
|
|
|
1
|
+
# Meetings: Core API — Schedule, Manage, and Control Meetings
|
|
2
|
+
|
|
3
|
+
Reference for the Webex Meetings core API. Covers the 46 commands in the `meetings` CLI group that a user or admin uses to create, schedule, manage, and control Webex meetings, webinars, and events. Includes meeting lifecycle, templates, controls, registration, interpreters, breakout sessions, surveys, and invitation sources. Sourced from the Webex Meetings API (OpenAPI spec: `specs/webex-meetings.json`).
|
|
4
|
+
|
|
5
|
+
## Sources
|
|
6
|
+
|
|
7
|
+
- OpenAPI spec: `specs/webex-meetings.json`
|
|
8
|
+
- [developer.webex.com Meetings API](https://developer.webex.com/docs/api/v1/meetings)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Token Type Matrix
|
|
13
|
+
|
|
14
|
+
Check this matrix before running any meetings command. The wrong token type will produce a 403 or empty results.
|
|
15
|
+
|
|
16
|
+
| Operation | User Token | Admin Token | Notes |
|
|
17
|
+
|-----------|-----------|-------------|-------|
|
|
18
|
+
| Meeting CRUD (user endpoints) | Yes | No (use admin endpoints) | User sees only their own meetings |
|
|
19
|
+
| Meeting CRUD (admin endpoints) | No | Yes | Admin can query any user's meetings via `--host-email` |
|
|
20
|
+
| Join a meeting | Yes | No | Generates join/start links for the authenticated user |
|
|
21
|
+
| End a meeting | Yes | Yes (with `--host-email`) | Only the host or admin can end |
|
|
22
|
+
| Meeting controls | Yes (host only) | No | Lock, recording start/pause |
|
|
23
|
+
| Templates | Yes | Yes (with `--host-email`) | Templates are site-specific |
|
|
24
|
+
| Registration & registrants | Yes (host only) | Yes (with `--host-email`) | Only applies to webinar-type meetings |
|
|
25
|
+
| Interpreters | Yes (host only) | Yes (with `--host-email`) | Simultaneous interpretation setup |
|
|
26
|
+
| Breakout sessions | Yes (host only) | Yes (with `--host-email`) | Must be configured before meeting starts |
|
|
27
|
+
| Surveys | Yes | Yes (with `--host-email`) | Results available only after meeting ends |
|
|
28
|
+
| Session types | Yes | Yes (with `--host-email`) | Read-only; configured at site level |
|
|
29
|
+
| Tracking codes | Yes | Yes (with `--host-email`) | Read-only via meetings group; admin CRUD in meetings-settings |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Table of Contents
|
|
34
|
+
|
|
35
|
+
1. [Meeting Data Model](#1-meeting-data-model)
|
|
36
|
+
2. [Meeting CRUD](#2-meeting-crud)
|
|
37
|
+
3. [Meeting Lifecycle](#3-meeting-lifecycle)
|
|
38
|
+
4. [Meeting Templates](#4-meeting-templates)
|
|
39
|
+
5. [Meeting Controls](#5-meeting-controls)
|
|
40
|
+
6. [Registration and Registrants](#6-registration-and-registrants)
|
|
41
|
+
7. [Interpreters and Simultaneous Interpretation](#7-interpreters-and-simultaneous-interpretation)
|
|
42
|
+
8. [Breakout Sessions](#8-breakout-sessions)
|
|
43
|
+
9. [Surveys](#9-surveys)
|
|
44
|
+
10. [Invitation Sources](#10-invitation-sources)
|
|
45
|
+
11. [Session Types and Tracking Codes](#11-session-types-and-tracking-codes)
|
|
46
|
+
12. [Raw HTTP Endpoints](#12-raw-http-endpoints)
|
|
47
|
+
13. [Gotchas](#13-gotchas)
|
|
48
|
+
14. [See Also](#14-see-also)
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 1. Meeting Data Model
|
|
53
|
+
|
|
54
|
+
A meeting object returned by the API contains these key fields:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Meeting
|
|
58
|
+
├── id Unique meeting ID
|
|
59
|
+
├── meetingSeriesId Series ID (for recurring meetings)
|
|
60
|
+
├── scheduledMeetingId Scheduled instance ID
|
|
61
|
+
├── meetingNumber Numeric meeting number (used for dialing in)
|
|
62
|
+
├── title Meeting title
|
|
63
|
+
├── agenda Meeting agenda/description
|
|
64
|
+
├── start / end ISO 8601 start and end times
|
|
65
|
+
├── timezone Timezone for the meeting
|
|
66
|
+
├── state active | inactive | ended | missed | expired
|
|
67
|
+
├── meetingType meetingSeries | scheduledMeeting | meeting (instance)
|
|
68
|
+
├── scheduledType meeting | webinar | personalRoomMeeting
|
|
69
|
+
├── hostEmail / hostDisplayName Meeting host
|
|
70
|
+
├── hostUserId Host's Webex user ID
|
|
71
|
+
├── password Meeting password
|
|
72
|
+
├── webLink Join link
|
|
73
|
+
├── sipAddress SIP URI for video endpoints
|
|
74
|
+
├── dialInIpAddress IP for H.323/SIP dial-in
|
|
75
|
+
├── telephony PSTN dial-in numbers
|
|
76
|
+
├── recurrence Recurrence rule (RFC 5545 RRULE)
|
|
77
|
+
├── meetingOptions Chat, file transfer, video, polling settings
|
|
78
|
+
├── attendeePrivileges Share, annotate, remote control permissions
|
|
79
|
+
├── registration Registration settings (webinar)
|
|
80
|
+
├── simultaneousInterpretation Interpreter settings
|
|
81
|
+
├── trackingCodes Array of tracking code name/value pairs
|
|
82
|
+
├── integrationTags External integration keys
|
|
83
|
+
├── has* flags hasRecording, hasChat, hasTranscription, etc.
|
|
84
|
+
└── links Related resource links
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Meeting ID types:** The `meetingId` parameter accepts three different ID types, and behavior changes depending on which is used:
|
|
88
|
+
- **Series ID** (`meetingSeriesId`) — represents the entire recurring series
|
|
89
|
+
- **Scheduled meeting ID** (`scheduledMeetingId`) — a specific occurrence in the series
|
|
90
|
+
- **Meeting instance ID** (`id`) — the actual meeting instance (only exists after meeting starts)
|
|
91
|
+
|
|
92
|
+
**Scheduled types:**
|
|
93
|
+
- `meeting` — standard Webex meeting
|
|
94
|
+
- `webinar` — webinar with registration, panelists, and attendee roles
|
|
95
|
+
- `personalRoomMeeting` — personal meeting room (PMR) meeting
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 2. Meeting CRUD
|
|
100
|
+
|
|
101
|
+
**CLI group:** `meetings`
|
|
102
|
+
**API base:** `https://webexapis.com/v1/meetings`
|
|
103
|
+
|
|
104
|
+
### Commands
|
|
105
|
+
|
|
106
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
107
|
+
|---------|-----|------------|-------------|
|
|
108
|
+
| List meetings | `wxcli meetings list-meetings` | GET /meetings | List meetings for the authenticated user |
|
|
109
|
+
| Create meeting | `wxcli meetings create-meetings` | POST /meetings | Schedule a new meeting |
|
|
110
|
+
| Show meeting | `wxcli meetings show-meetings MEETING_ID` | GET /meetings/{meetingId} | Get meeting details |
|
|
111
|
+
| Update meeting (full) | `wxcli meetings update-meetings MEETING_ID` | PUT /meetings/{meetingId} | Replace all meeting fields |
|
|
112
|
+
| Update meeting (partial) | `wxcli meetings update-meetings-1 MEETING_ID` | PATCH /meetings/{meetingId} | Update only specified fields |
|
|
113
|
+
| Delete meeting | `wxcli meetings delete-meetings MEETING_ID` | DELETE /meetings/{meetingId} | Cancel/delete a meeting |
|
|
114
|
+
| List meetings (admin) | `wxcli meetings list-meetings-admin` | GET /admin/meetings | List any user's meetings (admin token) |
|
|
115
|
+
| Show meeting (admin) | `wxcli meetings show-meetings-admin MEETING_ID` | GET /admin/meetings/{meetingId} | Get any meeting's details (admin token) |
|
|
116
|
+
|
|
117
|
+
### Key Parameters
|
|
118
|
+
|
|
119
|
+
#### `meetings list-meetings`
|
|
120
|
+
|
|
121
|
+
| Option | Description |
|
|
122
|
+
|--------|-------------|
|
|
123
|
+
| `--meeting-number TEXT` | Filter by meeting number |
|
|
124
|
+
| `--web-link TEXT` | Filter by meeting join link (URL-encoded) |
|
|
125
|
+
| `--room-id TEXT` | Filter by associated Webex space ID |
|
|
126
|
+
| `--meeting-series-id TEXT` | Filter by series ID |
|
|
127
|
+
| `--meeting-type meetingSeries\|scheduledMeeting\|meeting` | Filter by meeting type |
|
|
128
|
+
| `--state active\|inactive\|ended\|missed\|expired` | Filter by state (default: all future meetings) |
|
|
129
|
+
| `--scheduled-type meeting\|webinar\|personalRoomMeeting` | Filter by scheduled type |
|
|
130
|
+
| `--is-modified` | Filter to modified scheduled meetings only |
|
|
131
|
+
| `--has-chat` | Filter to ended meetings with chat logs |
|
|
132
|
+
| `--has-recording` | Filter to ended meetings with recordings |
|
|
133
|
+
| `--has-transcription` | Filter to ended meetings with transcripts |
|
|
134
|
+
| `--has-summary` | Filter to ended meetings with AI summaries |
|
|
135
|
+
| `--has-closed-caption` | Filter to ended meetings with closed captions |
|
|
136
|
+
| `--has-polls` | Filter to ended meetings with polls |
|
|
137
|
+
| `--has-qa` | Filter to ended meetings with Q&A |
|
|
138
|
+
| `--has-slido` | Filter to ended meetings with Slido interactions |
|
|
139
|
+
| `--from DATETIME` | Start of time range (ISO 8601) |
|
|
140
|
+
| `--to DATETIME` | End of time range (ISO 8601) |
|
|
141
|
+
| `--host-email EMAIL` | Admin: query another user's meetings |
|
|
142
|
+
| `--site-url URL` | Webex site to query (default: user's default site) |
|
|
143
|
+
| `--current` | Return only the current scheduled meeting in a series |
|
|
144
|
+
| `--integration-tag TEXT` | Filter by integration application tag |
|
|
145
|
+
| `--max N` | API-level page size (up to 100) |
|
|
146
|
+
| `--output table\|json` | Output format |
|
|
147
|
+
|
|
148
|
+
#### `meetings create-meetings`
|
|
149
|
+
|
|
150
|
+
| Option | Required | Description |
|
|
151
|
+
|--------|:--------:|-------------|
|
|
152
|
+
| `--title TEXT` | Yes | Meeting title |
|
|
153
|
+
| `--start DATETIME` | Yes | Start time (ISO 8601) |
|
|
154
|
+
| `--end DATETIME` | Yes | End time (ISO 8601) |
|
|
155
|
+
| `--timezone TEXT` | No | Timezone (default: host's timezone) |
|
|
156
|
+
| `--agenda TEXT` | No | Meeting description/agenda |
|
|
157
|
+
| `--password TEXT` | No | Meeting password (auto-generated if omitted) |
|
|
158
|
+
| `--scheduled-type meeting\|webinar` | No | Meeting or webinar (default: meeting) |
|
|
159
|
+
| `--recurrence TEXT` | No | RFC 5545 RRULE for recurring meetings |
|
|
160
|
+
| `--template-id TEXT` | No | Apply a meeting template |
|
|
161
|
+
| `--session-type-id TEXT` | No | Session type (from list-session-types) |
|
|
162
|
+
| `--host-email EMAIL` | No | Admin: schedule on behalf of another user |
|
|
163
|
+
| `--site-url URL` | No | Webex site (default: host's default site) |
|
|
164
|
+
| `--invitees JSON` | No | Array of invitee objects (email, displayName, coHost) |
|
|
165
|
+
| `--send-email` | No | Send email invitations to invitees |
|
|
166
|
+
| `--enabled-join-before-host` | No | Allow attendees to join before host |
|
|
167
|
+
| `--join-before-host-minutes N` | No | Minutes before start that attendees can join |
|
|
168
|
+
| `--enabled-auto-record-meeting` | No | Auto-record the meeting |
|
|
169
|
+
| `--enabled-breakout-sessions` | No | Enable breakout session capability |
|
|
170
|
+
| `--enabled-webcast-view` | No | Enable webcast view for webinars |
|
|
171
|
+
| `--room-id TEXT` | No | Associate with a Webex space |
|
|
172
|
+
| `--json-body JSON` | No | Full JSON body (overrides all other options) |
|
|
173
|
+
|
|
174
|
+
#### `meetings update-meetings` (PUT — full replace)
|
|
175
|
+
|
|
176
|
+
Same options as `create-meetings`. All fields must be provided; omitted fields revert to defaults.
|
|
177
|
+
|
|
178
|
+
#### `meetings update-meetings-1` (PATCH — partial update)
|
|
179
|
+
|
|
180
|
+
Same options as `create-meetings`. Only provided fields are updated; omitted fields remain unchanged.
|
|
181
|
+
|
|
182
|
+
#### `meetings list-meetings-admin` / `meetings show-meetings-admin`
|
|
183
|
+
|
|
184
|
+
These admin endpoints accept the same filtering options as their user-level counterparts, plus:
|
|
185
|
+
|
|
186
|
+
| Option | Description |
|
|
187
|
+
|--------|-------------|
|
|
188
|
+
| `--host-email EMAIL` | Required for admin queries — specifies which user's meetings to list |
|
|
189
|
+
|
|
190
|
+
### Raw HTTP
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
import requests
|
|
194
|
+
|
|
195
|
+
BASE = "https://webexapis.com/v1"
|
|
196
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
197
|
+
|
|
198
|
+
# List future meetings
|
|
199
|
+
resp = requests.get(f"{BASE}/meetings", headers=headers,
|
|
200
|
+
params={"from": "2026-03-01T00:00:00Z", "to": "2026-04-01T00:00:00Z"})
|
|
201
|
+
meetings = resp.json().get("items", [])
|
|
202
|
+
# Each item: {"id", "title", "start", "end", "meetingNumber", "webLink", "state", ...}
|
|
203
|
+
|
|
204
|
+
# Create a meeting
|
|
205
|
+
body = {
|
|
206
|
+
"title": "Weekly Standup",
|
|
207
|
+
"start": "2026-04-01T09:00:00-05:00",
|
|
208
|
+
"end": "2026-04-01T09:30:00-05:00",
|
|
209
|
+
"timezone": "America/Chicago",
|
|
210
|
+
"sendEmail": True,
|
|
211
|
+
"invitees": [
|
|
212
|
+
{"email": "alice@example.com", "coHost": True},
|
|
213
|
+
{"email": "bob@example.com"}
|
|
214
|
+
]
|
|
215
|
+
}
|
|
216
|
+
resp = requests.post(f"{BASE}/meetings", headers=headers, json=body)
|
|
217
|
+
meeting_id = resp.json().get("id")
|
|
218
|
+
|
|
219
|
+
# Get meeting details
|
|
220
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}", headers=headers)
|
|
221
|
+
|
|
222
|
+
# Patch a meeting (partial update)
|
|
223
|
+
resp = requests.patch(f"{BASE}/meetings/{meeting_id}", headers=headers,
|
|
224
|
+
json={"title": "Updated Standup", "agenda": "Sprint review added"})
|
|
225
|
+
|
|
226
|
+
# Delete a meeting
|
|
227
|
+
resp = requests.delete(f"{BASE}/meetings/{meeting_id}", headers=headers)
|
|
228
|
+
|
|
229
|
+
# Admin: list another user's meetings
|
|
230
|
+
resp = requests.get(f"{BASE}/admin/meetings", headers=headers,
|
|
231
|
+
params={"hostEmail": "user@example.com", "from": "2026-03-01T00:00:00Z",
|
|
232
|
+
"to": "2026-04-01T00:00:00Z"})
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Gotchas
|
|
236
|
+
|
|
237
|
+
- **`update-meetings` (PUT) is a full replace.** Every field you omit reverts to its default. Use `update-meetings-1` (PATCH) for partial updates.
|
|
238
|
+
- **`list-meetings` defaults to future meetings only.** To see past meetings, you must provide `--from` and `--to`.
|
|
239
|
+
- **`state` filter only applies to certain meeting types.** For example, `ended` only applies to meeting instances, not series.
|
|
240
|
+
- **Creating a recurring meeting** uses RFC 5545 RRULE syntax: `--recurrence "FREQ=WEEKLY;COUNT=10;BYDAY=MO"`.
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 3. Meeting Lifecycle
|
|
245
|
+
|
|
246
|
+
Commands for joining, ending, and reassigning meetings.
|
|
247
|
+
|
|
248
|
+
### Commands
|
|
249
|
+
|
|
250
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
251
|
+
|---------|-----|------------|-------------|
|
|
252
|
+
| Join meeting | `wxcli meetings create-join` | POST /meetings/join | Generate a join link for a meeting |
|
|
253
|
+
| End meeting | `wxcli meetings create-end MEETING_ID` | POST /meetings/{meetingId}/end | End an active meeting |
|
|
254
|
+
| Reassign host | `wxcli meetings create-reassign-host` | POST /meetings/reassignHost | Move all meetings from one host to another |
|
|
255
|
+
|
|
256
|
+
### Key Parameters
|
|
257
|
+
|
|
258
|
+
#### `meetings create-join`
|
|
259
|
+
|
|
260
|
+
| Option | Description |
|
|
261
|
+
|--------|-------------|
|
|
262
|
+
| `--meeting-id TEXT` | Join by meeting ID (use one of meetingId, meetingNumber, or webLink) |
|
|
263
|
+
| `--meeting-number TEXT` | Join by meeting number |
|
|
264
|
+
| `--web-link TEXT` | Join by meeting join link |
|
|
265
|
+
| `--email TEXT` | Email of the user joining |
|
|
266
|
+
| `--display-name TEXT` | Display name for the joining user |
|
|
267
|
+
| `--password TEXT` | Meeting password (required if meeting is password-protected) |
|
|
268
|
+
| `--expiration-minutes N` | Link expiration time in minutes |
|
|
269
|
+
| `--host-email TEXT` | Admin: join on behalf of another user |
|
|
270
|
+
| `--join-directly` | Join directly without lobby |
|
|
271
|
+
| `--registration-id TEXT` | Registration ID for webinar registrants |
|
|
272
|
+
| `--json-body JSON` | Full JSON body |
|
|
273
|
+
|
|
274
|
+
#### `meetings create-reassign-host`
|
|
275
|
+
|
|
276
|
+
| Option | Description |
|
|
277
|
+
|--------|-------------|
|
|
278
|
+
| `--current-host-email EMAIL` | Current host email (meetings will be moved FROM this user) |
|
|
279
|
+
| `--new-host-email EMAIL` | New host email (meetings will be moved TO this user) |
|
|
280
|
+
|
|
281
|
+
### Raw HTTP
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
BASE = "https://webexapis.com/v1"
|
|
285
|
+
|
|
286
|
+
# Join a meeting by meeting number
|
|
287
|
+
body = {
|
|
288
|
+
"meetingNumber": "1234567890",
|
|
289
|
+
"password": "Pa$$w0rd",
|
|
290
|
+
"email": "user@example.com",
|
|
291
|
+
"displayName": "John Doe"
|
|
292
|
+
}
|
|
293
|
+
resp = requests.post(f"{BASE}/meetings/join", headers=headers, json=body)
|
|
294
|
+
join_link = resp.json().get("joinLink")
|
|
295
|
+
start_link = resp.json().get("startLink") # Only returned for hosts
|
|
296
|
+
|
|
297
|
+
# End an active meeting
|
|
298
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/end", headers=headers)
|
|
299
|
+
|
|
300
|
+
# Reassign all meetings to a new host
|
|
301
|
+
body = {
|
|
302
|
+
"currentHostEmail": "leaving@example.com",
|
|
303
|
+
"newHostEmail": "replacement@example.com"
|
|
304
|
+
}
|
|
305
|
+
resp = requests.post(f"{BASE}/meetings/reassignHost", headers=headers, json=body)
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Gotchas
|
|
309
|
+
|
|
310
|
+
- **`create-join` can use meetingId, meetingNumber, or webLink** — exactly one must be provided.
|
|
311
|
+
- **`create-join` returns different links for hosts vs attendees.** Hosts get both `joinLink` and `startLink`; attendees only get `joinLink`.
|
|
312
|
+
- **`create-end` only works on active (in-progress) meetings.** Calling it on a scheduled or ended meeting returns an error.
|
|
313
|
+
- **`create-reassign-host` moves ALL meetings** from the current host to the new host. There is no per-meeting reassignment via this endpoint.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## 4. Meeting Templates
|
|
318
|
+
|
|
319
|
+
Templates define default meeting settings (audio options, attendee privileges, meeting options) that can be applied when creating meetings.
|
|
320
|
+
|
|
321
|
+
### Commands
|
|
322
|
+
|
|
323
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
324
|
+
|---------|-----|------------|-------------|
|
|
325
|
+
| List templates | `wxcli meetings list-templates` | GET /meetings/templates | List available meeting templates |
|
|
326
|
+
| Show template | `wxcli meetings show TEMPLATE_ID` | GET /meetings/templates/{templateId} | Get template details |
|
|
327
|
+
|
|
328
|
+
### Key Parameters
|
|
329
|
+
|
|
330
|
+
#### `meetings list-templates`
|
|
331
|
+
|
|
332
|
+
| Option | Description |
|
|
333
|
+
|--------|-------------|
|
|
334
|
+
| `--template-type TEXT` | Filter by template type |
|
|
335
|
+
| `--locale TEXT` | Locale for template names |
|
|
336
|
+
| `--is-default` | Filter to default templates only |
|
|
337
|
+
| `--is-standard` | Filter to standard (system) templates only |
|
|
338
|
+
| `--host-email EMAIL` | Admin: list templates available to another user |
|
|
339
|
+
|
|
340
|
+
#### `meetings show TEMPLATE_ID`
|
|
341
|
+
|
|
342
|
+
| Option | Description |
|
|
343
|
+
|--------|-------------|
|
|
344
|
+
| `--host-email EMAIL` | Admin: get template for another user |
|
|
345
|
+
|
|
346
|
+
### Raw HTTP
|
|
347
|
+
|
|
348
|
+
```python
|
|
349
|
+
BASE = "https://webexapis.com/v1"
|
|
350
|
+
|
|
351
|
+
# List available templates
|
|
352
|
+
resp = requests.get(f"{BASE}/meetings/templates", headers=headers)
|
|
353
|
+
templates = resp.json().get("items", [])
|
|
354
|
+
|
|
355
|
+
# Get template details (includes full meeting defaults)
|
|
356
|
+
resp = requests.get(f"{BASE}/meetings/templates/{template_id}", headers=headers)
|
|
357
|
+
template = resp.json()
|
|
358
|
+
# Returns: meeting settings, meetingOptions, attendeePrivileges, trackingCodes, etc.
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 5. Meeting Controls
|
|
364
|
+
|
|
365
|
+
Real-time controls for an active meeting. Only the meeting host can use these.
|
|
366
|
+
|
|
367
|
+
### Commands
|
|
368
|
+
|
|
369
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
370
|
+
|---------|-----|------------|-------------|
|
|
371
|
+
| Show controls | `wxcli meetings show-controls` | GET /meetings/controls | Get lock and recording status |
|
|
372
|
+
| Update controls | `wxcli meetings update` | PUT /meetings/controls | Lock/unlock meeting, start/pause recording |
|
|
373
|
+
|
|
374
|
+
### Key Parameters
|
|
375
|
+
|
|
376
|
+
#### `meetings show-controls`
|
|
377
|
+
|
|
378
|
+
| Option | Description |
|
|
379
|
+
|--------|-------------|
|
|
380
|
+
| `--meeting-id TEXT` | Meeting ID of the active meeting |
|
|
381
|
+
|
|
382
|
+
#### `meetings update` (meeting controls)
|
|
383
|
+
|
|
384
|
+
| Option | Description |
|
|
385
|
+
|--------|-------------|
|
|
386
|
+
| `--meeting-id TEXT` | Meeting ID of the active meeting (query parameter) |
|
|
387
|
+
| `--locked` | Lock or unlock the meeting |
|
|
388
|
+
| `--recording-started` | Start or stop recording |
|
|
389
|
+
| `--recording-paused` | Pause or resume recording |
|
|
390
|
+
|
|
391
|
+
### Raw HTTP
|
|
392
|
+
|
|
393
|
+
```python
|
|
394
|
+
BASE = "https://webexapis.com/v1"
|
|
395
|
+
|
|
396
|
+
# Get meeting control status
|
|
397
|
+
resp = requests.get(f"{BASE}/meetings/controls", headers=headers,
|
|
398
|
+
params={"meetingId": meeting_id})
|
|
399
|
+
# Returns: {"locked": false, "recordingStarted": false, "recordingPaused": false}
|
|
400
|
+
|
|
401
|
+
# Lock the meeting and start recording
|
|
402
|
+
resp = requests.put(f"{BASE}/meetings/controls", headers=headers,
|
|
403
|
+
params={"meetingId": meeting_id},
|
|
404
|
+
json={"locked": True, "recordingStarted": True})
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Gotchas
|
|
408
|
+
|
|
409
|
+
- **Only works on active (in-progress) meetings.** Returns an error if the meeting has not started or has already ended.
|
|
410
|
+
- **Only the host can control the meeting.** Co-hosts may have limited control depending on site settings.
|
|
411
|
+
- **`recordingStarted` and `recordingPaused` are independent.** You can pause a recording without stopping it.
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 6. Registration and Registrants
|
|
416
|
+
|
|
417
|
+
Registration forms and registrant management for webinar-type meetings. These endpoints only apply when the meeting has registration enabled (typically webinars).
|
|
418
|
+
|
|
419
|
+
### Registration Form Commands
|
|
420
|
+
|
|
421
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
422
|
+
|---------|-----|------------|-------------|
|
|
423
|
+
| Get form | `wxcli meetings list-registration MEETING_ID` | GET /meetings/{meetingId}/registration | Get the registration form configuration |
|
|
424
|
+
| Update form | `wxcli meetings update-registration MEETING_ID` | PUT /meetings/{meetingId}/registration | Configure registration form fields |
|
|
425
|
+
| Delete form | `wxcli meetings delete MEETING_ID` | DELETE /meetings/{meetingId}/registration | Remove registration form |
|
|
426
|
+
|
|
427
|
+
### Registrant Commands
|
|
428
|
+
|
|
429
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
430
|
+
|---------|-----|------------|-------------|
|
|
431
|
+
| List registrants | `wxcli meetings list-registrants MEETING_ID` | GET /meetings/{meetingId}/registrants | List all registrants |
|
|
432
|
+
| Register one | `wxcli meetings create MEETING_ID` | POST /meetings/{meetingId}/registrants | Register a single person |
|
|
433
|
+
| Batch register | `wxcli meetings create-bulk-insert MEETING_ID` | POST /meetings/{meetingId}/registrants/bulkInsert | Register multiple people at once |
|
|
434
|
+
| Show registrant | `wxcli meetings show-registrants MEETING_ID REGISTRANT_ID` | GET /meetings/{meetingId}/registrants/{registrantId} | Get registrant details |
|
|
435
|
+
| Update registrant | `wxcli meetings create-registrants MEETING_ID REGISTRANT_ID` | POST /meetings/{meetingId}/registrants/{registrantId} | Update registrant status |
|
|
436
|
+
| Delete registrant | `wxcli meetings delete-registrants MEETING_ID REGISTRANT_ID` | DELETE /meetings/{meetingId}/registrants/{registrantId} | Remove a registrant |
|
|
437
|
+
| Query registrants | `wxcli meetings create-query MEETING_ID` | POST /meetings/{meetingId}/registrants/query | Query registrants with filters |
|
|
438
|
+
| Batch approve | `wxcli meetings create-approve MEETING_ID` | POST /meetings/{meetingId}/registrants/approve | Approve multiple registrants |
|
|
439
|
+
| Batch reject | `wxcli meetings create-reject MEETING_ID` | POST /meetings/{meetingId}/registrants/reject | Reject multiple registrants |
|
|
440
|
+
| Batch cancel | `wxcli meetings create-cancel MEETING_ID` | POST /meetings/{meetingId}/registrants/cancel | Cancel multiple registrations |
|
|
441
|
+
| Batch delete | `wxcli meetings create-bulk-delete MEETING_ID` | POST /meetings/{meetingId}/registrants/bulkDelete | Delete multiple registrants |
|
|
442
|
+
|
|
443
|
+
### Key Parameters
|
|
444
|
+
|
|
445
|
+
#### `meetings update-registration`
|
|
446
|
+
|
|
447
|
+
| Option | Description |
|
|
448
|
+
|--------|-------------|
|
|
449
|
+
| `--auto-accept-request` | Automatically approve registrants (no manual review) |
|
|
450
|
+
| `--max-register-num N` | Maximum number of registrants allowed |
|
|
451
|
+
| `--require-first-name` | Require first name on the form |
|
|
452
|
+
| `--require-last-name` | Require last name on the form |
|
|
453
|
+
| `--require-email` | Require email on the form |
|
|
454
|
+
| `--require-company-name` | Require company name |
|
|
455
|
+
| `--require-job-title` | Require job title |
|
|
456
|
+
| `--require-work-phone` | Require work phone number |
|
|
457
|
+
| `--require-address-1` | Require address line 1 |
|
|
458
|
+
| `--require-city` | Require city |
|
|
459
|
+
| `--require-state` | Require state/province |
|
|
460
|
+
| `--require-zip-code` | Require postal code |
|
|
461
|
+
| `--require-country-region` | Require country/region |
|
|
462
|
+
| `--host-email EMAIL` | Admin: configure for another user's meeting |
|
|
463
|
+
| `--json-body JSON` | Full JSON body (required for customizedQuestions and rules) |
|
|
464
|
+
|
|
465
|
+
#### `meetings create` (register a single registrant)
|
|
466
|
+
|
|
467
|
+
| Option | Description |
|
|
468
|
+
|--------|-------------|
|
|
469
|
+
| `--first-name TEXT` | Registrant's first name |
|
|
470
|
+
| `--last-name TEXT` | Registrant's last name |
|
|
471
|
+
| `--email TEXT` | Registrant's email |
|
|
472
|
+
| `--send-email` | Send confirmation email |
|
|
473
|
+
| `--json-body JSON` | Full JSON body (for custom question answers) |
|
|
474
|
+
|
|
475
|
+
### Raw HTTP
|
|
476
|
+
|
|
477
|
+
```python
|
|
478
|
+
BASE = "https://webexapis.com/v1"
|
|
479
|
+
|
|
480
|
+
# Get registration form
|
|
481
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/registration", headers=headers)
|
|
482
|
+
|
|
483
|
+
# Update registration form with custom questions
|
|
484
|
+
body = {
|
|
485
|
+
"autoAcceptRequest": True,
|
|
486
|
+
"maxRegisterNum": 500,
|
|
487
|
+
"requireFirstName": "required",
|
|
488
|
+
"requireLastName": "required",
|
|
489
|
+
"requireEmail": "required",
|
|
490
|
+
"requireCompanyName": "required",
|
|
491
|
+
"customizedQuestions": [
|
|
492
|
+
{"question": "What is your role?", "type": "singleLineTextBox", "required": True}
|
|
493
|
+
]
|
|
494
|
+
}
|
|
495
|
+
resp = requests.put(f"{BASE}/meetings/{meeting_id}/registration", headers=headers, json=body)
|
|
496
|
+
|
|
497
|
+
# Register a person
|
|
498
|
+
body = {"firstName": "Jane", "lastName": "Doe", "email": "jane@example.com", "sendEmail": True}
|
|
499
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/registrants", headers=headers, json=body)
|
|
500
|
+
registrant_id = resp.json().get("id")
|
|
501
|
+
|
|
502
|
+
# Batch approve registrants
|
|
503
|
+
body = {"registrantIds": [registrant_id_1, registrant_id_2]}
|
|
504
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/registrants/approve", headers=headers, json=body)
|
|
505
|
+
|
|
506
|
+
# Query registrants by status
|
|
507
|
+
body = {"status": "pending"}
|
|
508
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/registrants/query", headers=headers, json=body)
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
### Gotchas
|
|
512
|
+
|
|
513
|
+
- **Registration only applies to webinar-type meetings.** Standard meetings do not support registration forms.
|
|
514
|
+
- **`create-registrants` (POST to `/{registrantId}`) is a status update, not a create.** Despite the CLI name, this updates an existing registrant's status (approve/reject/cancel).
|
|
515
|
+
- **`delete` (registration form) uses a bare command name** because it maps to `DELETE /meetings/{meetingId}/registration` — not to be confused with `delete-meetings` which deletes the meeting itself.
|
|
516
|
+
- **Batch operations (approve, reject, cancel, bulkDelete) accept arrays of registrant IDs** via `--json-body`.
|
|
517
|
+
- **Custom questions and rules require `--json-body`** — the CLI does not expose individual flags for nested question objects.
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
## 7. Interpreters and Simultaneous Interpretation
|
|
522
|
+
|
|
523
|
+
Manage interpreters for multilingual meetings. Interpreters provide real-time translation between language channels.
|
|
524
|
+
|
|
525
|
+
### Commands
|
|
526
|
+
|
|
527
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
528
|
+
|---------|-----|------------|-------------|
|
|
529
|
+
| List interpreters | `wxcli meetings list-interpreters MEETING_ID` | GET /meetings/{meetingId}/interpreters | List all interpreters for a meeting |
|
|
530
|
+
| Create interpreter | `wxcli meetings create-interpreters MEETING_ID` | POST /meetings/{meetingId}/interpreters | Add an interpreter |
|
|
531
|
+
| Show interpreter | `wxcli meetings show-interpreters MEETING_ID INTERPRETER_ID` | GET /meetings/{meetingId}/interpreters/{interpreterId} | Get interpreter details |
|
|
532
|
+
| Update interpreter | `wxcli meetings update-interpreters MEETING_ID INTERPRETER_ID` | PUT /meetings/{meetingId}/interpreters/{interpreterId} | Update interpreter assignment |
|
|
533
|
+
| Delete interpreter | `wxcli meetings delete-interpreters MEETING_ID INTERPRETER_ID` | DELETE /meetings/{meetingId}/interpreters/{interpreterId} | Remove an interpreter |
|
|
534
|
+
| Update SI settings | `wxcli meetings update-simultaneous-interpretation MEETING_ID` | PUT /meetings/{meetingId}/simultaneousInterpretation | Update overall SI configuration |
|
|
535
|
+
|
|
536
|
+
### Key Parameters
|
|
537
|
+
|
|
538
|
+
#### `meetings create-interpreters`
|
|
539
|
+
|
|
540
|
+
| Option | Description |
|
|
541
|
+
|--------|-------------|
|
|
542
|
+
| `--email TEXT` | Interpreter's email address |
|
|
543
|
+
| `--display-name TEXT` | Interpreter's display name |
|
|
544
|
+
| `--language-code-1 TEXT` | First language code (e.g., "en") |
|
|
545
|
+
| `--language-code-2 TEXT` | Second language code (e.g., "es") |
|
|
546
|
+
| `--host-email EMAIL` | Admin: add interpreter to another user's meeting |
|
|
547
|
+
| `--send-email` | Send invitation email to the interpreter |
|
|
548
|
+
|
|
549
|
+
### Raw HTTP
|
|
550
|
+
|
|
551
|
+
```python
|
|
552
|
+
BASE = "https://webexapis.com/v1"
|
|
553
|
+
|
|
554
|
+
# List interpreters
|
|
555
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/interpreters", headers=headers)
|
|
556
|
+
interpreters = resp.json().get("items", [])
|
|
557
|
+
|
|
558
|
+
# Add an interpreter (English <-> Spanish)
|
|
559
|
+
body = {
|
|
560
|
+
"email": "interpreter@example.com",
|
|
561
|
+
"displayName": "Maria Garcia",
|
|
562
|
+
"languageCode1": "en",
|
|
563
|
+
"languageCode2": "es",
|
|
564
|
+
"sendEmail": True
|
|
565
|
+
}
|
|
566
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/interpreters", headers=headers, json=body)
|
|
567
|
+
|
|
568
|
+
# Update simultaneous interpretation settings
|
|
569
|
+
body = {"enabled": True}
|
|
570
|
+
resp = requests.put(f"{BASE}/meetings/{meeting_id}/simultaneousInterpretation",
|
|
571
|
+
headers=headers, json=body)
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### Gotchas
|
|
575
|
+
|
|
576
|
+
- **Language codes use ISO 639-1 format** (e.g., "en", "es", "fr", "de", "zh", "ja").
|
|
577
|
+
- **Interpreters must be added before the meeting starts.** You cannot add interpreters to an active meeting via API.
|
|
578
|
+
- **`update-simultaneous-interpretation` controls the overall SI feature toggle** — it enables/disables SI for the meeting, separate from individual interpreter CRUD.
|
|
579
|
+
|
|
580
|
+
---
|
|
581
|
+
|
|
582
|
+
## 8. Breakout Sessions
|
|
583
|
+
|
|
584
|
+
Breakout sessions split a meeting into smaller sub-groups. They must be configured before the meeting starts.
|
|
585
|
+
|
|
586
|
+
### Commands
|
|
587
|
+
|
|
588
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
589
|
+
|---------|-----|------------|-------------|
|
|
590
|
+
| List breakout sessions | `wxcli meetings list-breakout-sessions MEETING_ID` | GET /meetings/{meetingId}/breakoutSessions | List all breakout sessions |
|
|
591
|
+
| Update breakout sessions | `wxcli meetings update-breakout-sessions MEETING_ID` | PUT /meetings/{meetingId}/breakoutSessions | Create or update breakout sessions |
|
|
592
|
+
| Delete breakout sessions | `wxcli meetings delete-breakout-sessions MEETING_ID` | DELETE /meetings/{meetingId}/breakoutSessions | Remove all breakout sessions |
|
|
593
|
+
|
|
594
|
+
### Key Parameters
|
|
595
|
+
|
|
596
|
+
#### `meetings update-breakout-sessions`
|
|
597
|
+
|
|
598
|
+
| Option | Description |
|
|
599
|
+
|--------|-------------|
|
|
600
|
+
| `--host-email EMAIL` | Admin: configure for another user's meeting |
|
|
601
|
+
| `--send-email` | Send notification emails |
|
|
602
|
+
| `--json-body JSON` | Full JSON body with breakout session items (required) |
|
|
603
|
+
|
|
604
|
+
The `items` array in the JSON body defines the breakout sessions:
|
|
605
|
+
|
|
606
|
+
```json
|
|
607
|
+
{
|
|
608
|
+
"items": [
|
|
609
|
+
{
|
|
610
|
+
"name": "Group A",
|
|
611
|
+
"invitees": ["alice@example.com", "bob@example.com"]
|
|
612
|
+
},
|
|
613
|
+
{
|
|
614
|
+
"name": "Group B",
|
|
615
|
+
"invitees": ["charlie@example.com", "dana@example.com"]
|
|
616
|
+
}
|
|
617
|
+
],
|
|
618
|
+
"sendEmail": true
|
|
619
|
+
}
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### Raw HTTP
|
|
623
|
+
|
|
624
|
+
```python
|
|
625
|
+
BASE = "https://webexapis.com/v1"
|
|
626
|
+
|
|
627
|
+
# List breakout sessions
|
|
628
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/breakoutSessions", headers=headers)
|
|
629
|
+
sessions = resp.json().get("items", [])
|
|
630
|
+
|
|
631
|
+
# Create/update breakout sessions
|
|
632
|
+
body = {
|
|
633
|
+
"items": [
|
|
634
|
+
{"name": "Engineering", "invitees": ["eng1@example.com", "eng2@example.com"]},
|
|
635
|
+
{"name": "Marketing", "invitees": ["mkt1@example.com", "mkt2@example.com"]}
|
|
636
|
+
],
|
|
637
|
+
"sendEmail": True
|
|
638
|
+
}
|
|
639
|
+
resp = requests.put(f"{BASE}/meetings/{meeting_id}/breakoutSessions", headers=headers, json=body)
|
|
640
|
+
|
|
641
|
+
# Delete all breakout sessions
|
|
642
|
+
resp = requests.delete(f"{BASE}/meetings/{meeting_id}/breakoutSessions", headers=headers)
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
### Gotchas
|
|
646
|
+
|
|
647
|
+
- **Breakout sessions must be configured before the meeting starts.** The API does not support creating breakout sessions during an active meeting.
|
|
648
|
+
- **`update-breakout-sessions` (PUT) is a full replace** — it replaces all existing breakout sessions with the provided set.
|
|
649
|
+
- **`delete-breakout-sessions` removes ALL breakout sessions** for the meeting. There is no per-session delete.
|
|
650
|
+
- **`enabledBreakoutSessions` must be `true` on the meeting** (set during create or update) for breakout sessions to work.
|
|
651
|
+
- **Breakout session configuration requires `--json-body`** because the items array is a nested structure.
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
## 9. Surveys
|
|
656
|
+
|
|
657
|
+
Retrieve meeting surveys and survey results. Surveys are configured in the Webex meeting client, not via API — these endpoints only read the survey definition and collect results after the meeting ends.
|
|
658
|
+
|
|
659
|
+
### Commands
|
|
660
|
+
|
|
661
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
662
|
+
|---------|-----|------------|-------------|
|
|
663
|
+
| Get survey | `wxcli meetings list-survey MEETING_ID` | GET /meetings/{meetingId}/survey | Get the survey definition for a meeting |
|
|
664
|
+
| List survey results | `wxcli meetings list-survey-results MEETING_ID` | GET /meetings/{meetingId}/surveyResults | List survey responses from attendees |
|
|
665
|
+
| Get survey links | `wxcli meetings create-survey-links MEETING_ID` | POST /meetings/{meetingId}/surveyLinks | Generate shareable survey links |
|
|
666
|
+
|
|
667
|
+
### Key Parameters
|
|
668
|
+
|
|
669
|
+
#### `meetings list-survey-results`
|
|
670
|
+
|
|
671
|
+
| Option | Description |
|
|
672
|
+
|--------|-------------|
|
|
673
|
+
| `--meeting-id TEXT` | Meeting ID (required) |
|
|
674
|
+
| `--max N` | API-level page size |
|
|
675
|
+
| `--output table\|json` | Output format |
|
|
676
|
+
|
|
677
|
+
#### `meetings create-survey-links`
|
|
678
|
+
|
|
679
|
+
| Option | Description |
|
|
680
|
+
|--------|-------------|
|
|
681
|
+
| `--meeting-id TEXT` | Meeting ID (required) |
|
|
682
|
+
| `--host-email EMAIL` | Admin: generate links for another user's meeting |
|
|
683
|
+
| `--json-body JSON` | Full JSON body |
|
|
684
|
+
|
|
685
|
+
### Raw HTTP
|
|
686
|
+
|
|
687
|
+
```python
|
|
688
|
+
BASE = "https://webexapis.com/v1"
|
|
689
|
+
|
|
690
|
+
# Get survey definition
|
|
691
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/survey", headers=headers)
|
|
692
|
+
survey = resp.json()
|
|
693
|
+
# Returns: questions, options, survey settings
|
|
694
|
+
|
|
695
|
+
# List survey results (after meeting ends)
|
|
696
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/surveyResults", headers=headers)
|
|
697
|
+
results = resp.json().get("items", [])
|
|
698
|
+
|
|
699
|
+
# Generate survey links
|
|
700
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/surveyLinks", headers=headers)
|
|
701
|
+
links = resp.json()
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
### Gotchas
|
|
705
|
+
|
|
706
|
+
- **Survey results are only available after the meeting ends.** Querying during an active meeting returns empty results.
|
|
707
|
+
- **Surveys are configured in the Webex meeting client**, not via this API. These endpoints are read-only (survey definition) plus link generation.
|
|
708
|
+
|
|
709
|
+
---
|
|
710
|
+
|
|
711
|
+
## 10. Invitation Sources
|
|
712
|
+
|
|
713
|
+
Track where meeting invitations were sent from (e.g., calendar integrations, email clients). This is a tracking/analytics feature.
|
|
714
|
+
|
|
715
|
+
### Commands
|
|
716
|
+
|
|
717
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
718
|
+
|---------|-----|------------|-------------|
|
|
719
|
+
| List sources | `wxcli meetings list-invitation-sources MEETING_ID` | GET /meetings/{meetingId}/invitationSources | List invitation sources for a meeting |
|
|
720
|
+
| Create sources | `wxcli meetings create-invitation-sources MEETING_ID` | POST /meetings/{meetingId}/invitationSources | Record an invitation source |
|
|
721
|
+
|
|
722
|
+
### Key Parameters
|
|
723
|
+
|
|
724
|
+
#### `meetings create-invitation-sources`
|
|
725
|
+
|
|
726
|
+
| Option | Description |
|
|
727
|
+
|--------|-------------|
|
|
728
|
+
| `--host-email EMAIL` | Admin: create for another user's meeting |
|
|
729
|
+
| `--person-id TEXT` | Person who sent the invitation |
|
|
730
|
+
| `--json-body JSON` | Full JSON body with items array |
|
|
731
|
+
|
|
732
|
+
### Raw HTTP
|
|
733
|
+
|
|
734
|
+
```python
|
|
735
|
+
BASE = "https://webexapis.com/v1"
|
|
736
|
+
|
|
737
|
+
# List invitation sources
|
|
738
|
+
resp = requests.get(f"{BASE}/meetings/{meeting_id}/invitationSources", headers=headers)
|
|
739
|
+
sources = resp.json().get("items", [])
|
|
740
|
+
|
|
741
|
+
# Record an invitation source
|
|
742
|
+
body = {
|
|
743
|
+
"personId": person_id,
|
|
744
|
+
"items": [{"sourceType": "email", "sourceId": "outlook"}]
|
|
745
|
+
}
|
|
746
|
+
resp = requests.post(f"{BASE}/meetings/{meeting_id}/invitationSources", headers=headers, json=body)
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
---
|
|
750
|
+
|
|
751
|
+
## 11. Session Types and Tracking Codes
|
|
752
|
+
|
|
753
|
+
These are read-only configuration endpoints. Session types define what meeting capabilities are available (based on Webex site configuration). Tracking codes are metadata tags applied to meetings for reporting and compliance.
|
|
754
|
+
|
|
755
|
+
**Note:** Admin-level CRUD for session types and tracking codes is in the `meeting-config` and `meeting-user-config` CLI groups, documented in `meetings-settings.md`.
|
|
756
|
+
|
|
757
|
+
### Commands
|
|
758
|
+
|
|
759
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
760
|
+
|---------|-----|------------|-------------|
|
|
761
|
+
| List session types | `wxcli meetings list-session-types` | GET /meetings/sessionTypes | List available session types |
|
|
762
|
+
| Show session type | `wxcli meetings show-session-types SESSION_TYPE_ID` | GET /meetings/sessionTypes/{sessionTypeId} | Get session type details |
|
|
763
|
+
| List tracking codes | `wxcli meetings list` | GET /meetings/trackingCodes | List tracking codes for the site |
|
|
764
|
+
|
|
765
|
+
### Key Parameters
|
|
766
|
+
|
|
767
|
+
#### `meetings list-session-types`
|
|
768
|
+
|
|
769
|
+
| Option | Description |
|
|
770
|
+
|--------|-------------|
|
|
771
|
+
| `--host-email EMAIL` | Admin: list session types for another user |
|
|
772
|
+
| `--site-url URL` | Webex site to query |
|
|
773
|
+
|
|
774
|
+
#### `meetings list` (tracking codes)
|
|
775
|
+
|
|
776
|
+
| Option | Description |
|
|
777
|
+
|--------|-------------|
|
|
778
|
+
| `--host-email EMAIL` | Admin: list tracking codes for another user |
|
|
779
|
+
| `--site-url URL` | Webex site to query |
|
|
780
|
+
|
|
781
|
+
### Raw HTTP
|
|
782
|
+
|
|
783
|
+
```python
|
|
784
|
+
BASE = "https://webexapis.com/v1"
|
|
785
|
+
|
|
786
|
+
# List session types
|
|
787
|
+
resp = requests.get(f"{BASE}/meetings/sessionTypes", headers=headers)
|
|
788
|
+
session_types = resp.json().get("items", [])
|
|
789
|
+
# Each item: {"id", "name", "type", "subType", ...}
|
|
790
|
+
|
|
791
|
+
# Get session type details
|
|
792
|
+
resp = requests.get(f"{BASE}/meetings/sessionTypes/{session_type_id}", headers=headers)
|
|
793
|
+
|
|
794
|
+
# List tracking codes
|
|
795
|
+
resp = requests.get(f"{BASE}/meetings/trackingCodes", headers=headers)
|
|
796
|
+
tracking_codes = resp.json().get("items", [])
|
|
797
|
+
# Each item: {"name", "value", ...}
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
### Gotchas
|
|
801
|
+
|
|
802
|
+
- **Session types are configured at the Webex site level.** You cannot create or modify session types via the meetings API — use the admin `meeting-config` group.
|
|
803
|
+
- **`meetings list` maps to tracking codes** (GET /meetings/trackingCodes), which can be confusing since `meetings list-meetings` maps to GET /meetings. Use `--help` to verify.
|
|
804
|
+
- **Tracking codes vary by site.** Different Webex sites in the same org may have different tracking codes configured.
|
|
805
|
+
|
|
806
|
+
---
|
|
807
|
+
|
|
808
|
+
## 12. Raw HTTP Endpoints
|
|
809
|
+
|
|
810
|
+
Complete table of all 46 endpoints in the `meetings` CLI group.
|
|
811
|
+
|
|
812
|
+
| HTTP Method | Path | CLI Command | Summary |
|
|
813
|
+
|-------------|------|-------------|---------|
|
|
814
|
+
| GET | /meetings | `list-meetings` | List Meetings |
|
|
815
|
+
| POST | /meetings | `create-meetings` | Create a Meeting |
|
|
816
|
+
| GET | /meetings/{meetingId} | `show-meetings` | Get a Meeting |
|
|
817
|
+
| PUT | /meetings/{meetingId} | `update-meetings` | Update a Meeting (full replace) |
|
|
818
|
+
| PATCH | /meetings/{meetingId} | `update-meetings-1` | Patch a Meeting (partial update) |
|
|
819
|
+
| DELETE | /meetings/{meetingId} | `delete-meetings` | Delete a Meeting |
|
|
820
|
+
| GET | /admin/meetings | `list-meetings-admin` | List Meetings By an Admin |
|
|
821
|
+
| GET | /admin/meetings/{meetingId} | `show-meetings-admin` | Get a Meeting By an Admin |
|
|
822
|
+
| POST | /meetings/join | `create-join` | Join a Meeting |
|
|
823
|
+
| POST | /meetings/{meetingId}/end | `create-end` | End a Meeting |
|
|
824
|
+
| POST | /meetings/reassignHost | `create-reassign-host` | Reassign Meetings to a New Host |
|
|
825
|
+
| GET | /meetings/templates | `list-templates` | List Meeting Templates |
|
|
826
|
+
| GET | /meetings/templates/{templateId} | `show` | Get a Meeting Template |
|
|
827
|
+
| GET | /meetings/controls | `show-controls` | Get Meeting Control Status |
|
|
828
|
+
| PUT | /meetings/controls | `update` | Update Meeting Control Status |
|
|
829
|
+
| GET | /meetings/{meetingId}/registration | `list-registration` | Get Registration Form |
|
|
830
|
+
| PUT | /meetings/{meetingId}/registration | `update-registration` | Update Meeting Registration Form |
|
|
831
|
+
| DELETE | /meetings/{meetingId}/registration | `delete` | Delete Meeting Registration Form |
|
|
832
|
+
| GET | /meetings/{meetingId}/registrants | `list-registrants` | List Meeting Registrants |
|
|
833
|
+
| POST | /meetings/{meetingId}/registrants | `create` | Register a Meeting Registrant |
|
|
834
|
+
| POST | /meetings/{meetingId}/registrants/bulkInsert | `create-bulk-insert` | Batch Register Meeting Registrants |
|
|
835
|
+
| GET | /meetings/{meetingId}/registrants/{registrantId} | `show-registrants` | Get Registrant Details |
|
|
836
|
+
| POST | /meetings/{meetingId}/registrants/{registrantId} | `create-registrants` | Batch Update Registrant Status |
|
|
837
|
+
| DELETE | /meetings/{meetingId}/registrants/{registrantId} | `delete-registrants` | Delete a Meeting Registrant |
|
|
838
|
+
| POST | /meetings/{meetingId}/registrants/query | `create-query` | Query Meeting Registrants |
|
|
839
|
+
| POST | /meetings/{meetingId}/registrants/approve | `create-approve` | Batch Approve Meeting Registrants |
|
|
840
|
+
| POST | /meetings/{meetingId}/registrants/reject | `create-reject` | Batch Reject Meeting Registrants |
|
|
841
|
+
| POST | /meetings/{meetingId}/registrants/cancel | `create-cancel` | Batch Cancel Meeting Registrants |
|
|
842
|
+
| POST | /meetings/{meetingId}/registrants/bulkDelete | `create-bulk-delete` | Batch Delete Meeting Registrants |
|
|
843
|
+
| GET | /meetings/{meetingId}/interpreters | `list-interpreters` | List Meeting Interpreters |
|
|
844
|
+
| POST | /meetings/{meetingId}/interpreters | `create-interpreters` | Create a Meeting Interpreter |
|
|
845
|
+
| GET | /meetings/{meetingId}/interpreters/{interpreterId} | `show-interpreters` | Get a Meeting Interpreter |
|
|
846
|
+
| PUT | /meetings/{meetingId}/interpreters/{interpreterId} | `update-interpreters` | Update a Meeting Interpreter |
|
|
847
|
+
| DELETE | /meetings/{meetingId}/interpreters/{interpreterId} | `delete-interpreters` | Delete a Meeting Interpreter |
|
|
848
|
+
| PUT | /meetings/{meetingId}/simultaneousInterpretation | `update-simultaneous-interpretation` | Update Simultaneous Interpretation |
|
|
849
|
+
| GET | /meetings/{meetingId}/breakoutSessions | `list-breakout-sessions` | List Meeting Breakout Sessions |
|
|
850
|
+
| PUT | /meetings/{meetingId}/breakoutSessions | `update-breakout-sessions` | Update Meeting Breakout Sessions |
|
|
851
|
+
| DELETE | /meetings/{meetingId}/breakoutSessions | `delete-breakout-sessions` | Delete Meeting Breakout Sessions |
|
|
852
|
+
| GET | /meetings/{meetingId}/survey | `list-survey` | Get a Meeting Survey |
|
|
853
|
+
| GET | /meetings/{meetingId}/surveyResults | `list-survey-results` | List Meeting Survey Results |
|
|
854
|
+
| POST | /meetings/{meetingId}/surveyLinks | `create-survey-links` | Get Meeting Survey Links |
|
|
855
|
+
| GET | /meetings/{meetingId}/invitationSources | `list-invitation-sources` | List Invitation Sources |
|
|
856
|
+
| POST | /meetings/{meetingId}/invitationSources | `create-invitation-sources` | Create Invitation Sources |
|
|
857
|
+
| GET | /meetings/sessionTypes | `list-session-types` | List Meeting Session Types |
|
|
858
|
+
| GET | /meetings/sessionTypes/{sessionTypeId} | `show-session-types` | Get a Meeting Session Type |
|
|
859
|
+
| GET | /meetings/trackingCodes | `list` | List Meeting Tracking Codes |
|
|
860
|
+
|
|
861
|
+
---
|
|
862
|
+
|
|
863
|
+
## 13. Gotchas
|
|
864
|
+
|
|
865
|
+
These issues span multiple meetings API surfaces. Check per-section Gotchas for endpoint-specific notes.
|
|
866
|
+
|
|
867
|
+
1. **Admin endpoints (`/admin/meetings`) require an admin token; user endpoints require a user token.** Admin tokens cannot access `/meetings` (user-scoped). User tokens cannot access `/admin/meetings`. The admin endpoints mirror the user endpoints but accept `--host-email` to query any user's meetings.
|
|
868
|
+
|
|
869
|
+
2. **`meetingId` can be a series ID, scheduled meeting ID, or meeting instance ID — behavior differs.** When you pass a series ID, the API returns the series-level data. When you pass a scheduled meeting ID, you get that specific occurrence. When you pass a meeting instance ID, you get the actual meeting that ran (with attendee counts, duration, etc.). Use `meetingType` to understand which type you received.
|
|
870
|
+
|
|
871
|
+
3. **`list-meetings` defaults to returning future meetings only.** If you do not specify `--from` and `--to`, the API returns only upcoming scheduled meetings. To see historical meetings, you must explicitly provide a date range. The maximum range is 90 days per query.
|
|
872
|
+
|
|
873
|
+
4. **`update-meetings` (PUT) replaces all fields; `update-meetings-1` (PATCH) updates only specified fields.** Always use PATCH for partial updates. PUT with missing fields will reset those fields to defaults, potentially removing invitees, agenda text, and other configuration.
|
|
874
|
+
|
|
875
|
+
5. **`create-join` can join by meetingId, meetingNumber, or webLink — exactly one must be provided.** If you pass multiple, the API returns an error. The `webLink` value must be URL-encoded.
|
|
876
|
+
|
|
877
|
+
6. **Registration and registrants only apply to webinar-type meetings.** Attempting to configure registration on a standard meeting type returns an error. Set `--scheduled-type webinar` when creating the meeting.
|
|
878
|
+
|
|
879
|
+
7. **Breakout sessions must be created before the meeting starts.** The API does not support creating or modifying breakout sessions during an active meeting. Plan your breakout configuration during meeting scheduling.
|
|
880
|
+
|
|
881
|
+
8. **Survey results are only available after the meeting ends.** The `list-survey-results` endpoint returns empty results for active or scheduled meetings. Similarly, `has*` filter flags (`--has-recording`, `--has-chat`, etc.) only apply to ended meeting instances.
|
|
882
|
+
|
|
883
|
+
9. **The `--host-email` parameter is the admin override mechanism.** Admin-scoped endpoints require `--host-email` to specify which user's meetings to operate on. Without it, the API operates on the authenticated admin's own meetings (if they have a Webex Meetings license) or returns an error.
|
|
884
|
+
|
|
885
|
+
10. **Passwords may be auto-generated.** If you do not provide `--password` when creating a meeting, the API generates one based on site password policy. The password is returned in the create response and in subsequent GET calls.
|
|
886
|
+
|
|
887
|
+
11. **Recurring meeting operations.** When updating or deleting a recurring meeting using the series ID, the change applies to ALL future occurrences. To modify a single occurrence, use the scheduled meeting ID for that specific occurrence.
|
|
888
|
+
|
|
889
|
+
12. **Site URL matters for multi-site orgs.** Organizations with multiple Webex sites (e.g., `site1.webex.com` and `site2.webex.com`) must specify `--site-url` to target the correct site. The default is the user's primary site.
|
|
890
|
+
|
|
891
|
+
13. **CLI command name collisions.** Several commands have generic names (`list`, `create`, `delete`, `show`, `update`) that map to non-obvious endpoints. For example, `meetings list` maps to tracking codes (GET /meetings/trackingCodes), not meeting listing. `meetings delete` maps to registration form deletion. Always check `wxcli meetings <command> --help` to verify which endpoint a command targets.
|
|
892
|
+
|
|
893
|
+
---
|
|
894
|
+
|
|
895
|
+
## 14. See Also
|
|
896
|
+
|
|
897
|
+
- `meetings-content.md` — Meeting content: recordings, transcripts, closed captions, chat, polls, Q&A, summaries
|
|
898
|
+
- `meetings-settings.md` — Meeting preferences, site configuration, session types (admin CRUD), tracking codes (admin CRUD), common settings
|
|
899
|
+
- `meetings-infrastructure.md` — Meeting participants, invitees, reports, Video Mesh, Slido compliance
|
|
900
|
+
- [`admin-hybrid.md`](admin-hybrid.md) — Meeting quality metrics (`GET /meeting/qualities`), hybrid analytics
|
|
901
|
+
- [`admin-apps-data.md`](admin-apps-data.md) — Admin/group recordings, soft-delete/restore/purge, access lists
|
|
902
|
+
- [`authentication.md`](authentication.md) — Token types (user, admin), scopes, OAuth flows
|
|
903
|
+
- [`webhooks-events.md`](webhooks-events.md) — Webhook events for meeting lifecycle (meeting started, ended, participant joined/left)
|