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,473 @@
|
|
|
1
|
+
# Meetings: Transcripts, Captions, Chats, and Summaries
|
|
2
|
+
|
|
3
|
+
Reference for Webex Meetings content and media APIs. Covers the 16 commands across 5 CLI groups that an admin, compliance officer, or meeting host uses to retrieve, download, and manage meeting transcripts, closed captions, post-meeting chats, in-meeting messages, and AI-generated summaries. 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 APIs](https://developer.webex.com/docs/api/v1/meeting-transcripts)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Table of Contents
|
|
13
|
+
|
|
14
|
+
1. [Content Model Overview](#1-content-model-overview)
|
|
15
|
+
2. [Transcripts](#2-transcripts)
|
|
16
|
+
3. [Closed Captions](#3-closed-captions)
|
|
17
|
+
4. [Chats](#4-chats)
|
|
18
|
+
5. [Meeting Messages](#5-meeting-messages)
|
|
19
|
+
6. [Summaries](#6-summaries)
|
|
20
|
+
7. [Recordings (Cross-Reference)](#7-recordings-cross-reference)
|
|
21
|
+
8. [Raw HTTP Endpoints](#8-raw-http-endpoints)
|
|
22
|
+
9. [Gotchas](#9-gotchas)
|
|
23
|
+
10. [See Also](#10-see-also)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. Content Model Overview
|
|
28
|
+
|
|
29
|
+
Every Webex meeting can produce multiple content artifacts. These become available after the meeting ends (with the exception of in-meeting messages, which exist during the meeting).
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Meeting Instance (ended)
|
|
33
|
+
├── Transcripts ← speech-to-text of the full meeting audio
|
|
34
|
+
│ └── Snippets ← individual speaker segments within a transcript
|
|
35
|
+
├── Closed Captions ← real-time captions captured during the meeting
|
|
36
|
+
│ └── Snippets ← individual caption segments
|
|
37
|
+
├── Post-Meeting Chats ← chat messages sent during the meeting
|
|
38
|
+
├── Meeting Messages ← in-meeting chat (compliance deletion only)
|
|
39
|
+
└── Summaries ← AI-generated meeting summary (requires AI Assistant)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Key distinctions:**
|
|
43
|
+
- **Transcripts** are generated after the meeting from the recorded audio. They contain speaker-attributed text segments (snippets) and can be downloaded as VTT or TXT files.
|
|
44
|
+
- **Closed captions** are captured in real-time during the meeting. They are separate from transcripts and have their own snippet/download endpoints.
|
|
45
|
+
- **Post-meeting chats** (`postMeetingChats`) are the chat messages participants sent during the meeting, made available after the meeting ends.
|
|
46
|
+
- **Meeting messages** are a compliance-only deletion endpoint for removing specific messages from a meeting's chat history.
|
|
47
|
+
- **Summaries** are AI-generated meeting summaries that require the Webex AI Assistant feature to be enabled in the org.
|
|
48
|
+
|
|
49
|
+
**Token type requirements:**
|
|
50
|
+
- Most endpoints work with **user tokens** (meeting host or attendee).
|
|
51
|
+
- Compliance endpoints at `/admin/meetingTranscripts` and `/admin/meetingSummaries` require **admin tokens** with compliance officer scopes.
|
|
52
|
+
- The `hostEmail` parameter on several endpoints allows an admin to act on behalf of a specific host.
|
|
53
|
+
|
|
54
|
+
**CLI groups in this doc:**
|
|
55
|
+
|
|
56
|
+
| CLI Group | Resource | Commands |
|
|
57
|
+
|-----------|----------|---------|
|
|
58
|
+
| `meeting-transcripts` | Transcripts + snippets | 7 |
|
|
59
|
+
| `meeting-captions` | Closed captions + snippets | 3 |
|
|
60
|
+
| `meeting-chats` | Post-meeting chats | 2 |
|
|
61
|
+
| `meeting-messages` | In-meeting messages (compliance) | 1 |
|
|
62
|
+
| `meeting-summaries` | AI-generated summaries | 3 |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 2. Transcripts
|
|
67
|
+
|
|
68
|
+
**CLI group:** `meeting-transcripts`
|
|
69
|
+
**API base:** `https://webexapis.com/v1/meetingTranscripts`
|
|
70
|
+
|
|
71
|
+
Transcripts provide speech-to-text content for ended meetings. Each transcript is composed of snippets — individual speaker segments with timestamps. Two list endpoints exist: one for regular users (scoped to their meetings) and one for compliance officers (org-wide).
|
|
72
|
+
|
|
73
|
+
### Commands
|
|
74
|
+
|
|
75
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
76
|
+
|---------|-----|------------|-------------|
|
|
77
|
+
| List (compliance) | `wxcli meeting-transcripts list` | GET /admin/meetingTranscripts | List transcripts org-wide (compliance officer) |
|
|
78
|
+
| List (user) | `wxcli meeting-transcripts list-meeting-transcripts` | GET /meetingTranscripts | List transcripts for the authenticated user's meetings |
|
|
79
|
+
| Download | `wxcli meeting-transcripts list-download TRANSCRIPT_ID` | GET /meetingTranscripts/{transcriptId}/download | Download transcript as VTT or TXT |
|
|
80
|
+
| List snippets | `wxcli meeting-transcripts list-snippets TRANSCRIPT_ID` | GET /meetingTranscripts/{transcriptId}/snippets | List speaker segments in a transcript |
|
|
81
|
+
| Show snippet | `wxcli meeting-transcripts show TRANSCRIPT_ID SNIPPET_ID` | GET /meetingTranscripts/{transcriptId}/snippets/{snippetId} | Get a single snippet's details |
|
|
82
|
+
| Update snippet | `wxcli meeting-transcripts update TRANSCRIPT_ID SNIPPET_ID` | PUT /meetingTranscripts/{transcriptId}/snippets/{snippetId} | Edit the text of a snippet (corrections) |
|
|
83
|
+
| Delete | `wxcli meeting-transcripts delete TRANSCRIPT_ID` | DELETE /meetingTranscripts/{transcriptId} | Delete a transcript |
|
|
84
|
+
|
|
85
|
+
### Key Parameters
|
|
86
|
+
|
|
87
|
+
#### `meeting-transcripts list` (compliance)
|
|
88
|
+
|
|
89
|
+
| Option | Description |
|
|
90
|
+
|--------|-------------|
|
|
91
|
+
| `--from DATETIME` | Starting date/time (inclusive), ISO 8601 |
|
|
92
|
+
| `--to DATETIME` | Ending date/time (exclusive), ISO 8601 |
|
|
93
|
+
| `--max N` | Page size (1-100) |
|
|
94
|
+
| `--site-url URL` | Webex site URL to scope the query |
|
|
95
|
+
|
|
96
|
+
#### `meeting-transcripts list-meeting-transcripts` (user)
|
|
97
|
+
|
|
98
|
+
| Option | Description |
|
|
99
|
+
|--------|-------------|
|
|
100
|
+
| `--meeting-id ID` | Filter to a specific meeting instance. If omitted, returns transcripts for all of the user's meetings |
|
|
101
|
+
| `--host-email EMAIL` | Act on behalf of this host (admin token + admin scopes required) |
|
|
102
|
+
| `--site-url URL` | Webex site URL. Defaults to user's preferred site |
|
|
103
|
+
| `--from DATETIME` | Starting date/time (inclusive), ISO 8601 |
|
|
104
|
+
| `--to DATETIME` | Ending date/time (exclusive), ISO 8601 |
|
|
105
|
+
| `--max N` | Page size (1-100) |
|
|
106
|
+
|
|
107
|
+
#### `meeting-transcripts list-download`
|
|
108
|
+
|
|
109
|
+
| Option | Description |
|
|
110
|
+
|--------|-------------|
|
|
111
|
+
| `--format FORMAT` | Download format: `vtt` or `txt` |
|
|
112
|
+
| `--host-email EMAIL` | Act on behalf of this host (admin token + admin scopes required) |
|
|
113
|
+
|
|
114
|
+
#### `meeting-transcripts list-snippets`
|
|
115
|
+
|
|
116
|
+
| Option | Description |
|
|
117
|
+
|--------|-------------|
|
|
118
|
+
| `--max N` | Maximum snippet items per page |
|
|
119
|
+
|
|
120
|
+
#### `meeting-transcripts update`
|
|
121
|
+
|
|
122
|
+
| Option | Description |
|
|
123
|
+
|--------|-------------|
|
|
124
|
+
| `--reason TEXT` | Reason for the edit |
|
|
125
|
+
| `--text TEXT` | Corrected text for the snippet |
|
|
126
|
+
|
|
127
|
+
#### `meeting-transcripts delete`
|
|
128
|
+
|
|
129
|
+
| Option | Description |
|
|
130
|
+
|--------|-------------|
|
|
131
|
+
| `--reason TEXT` | Reason for the deletion |
|
|
132
|
+
| `--comment TEXT` | Additional comment |
|
|
133
|
+
|
|
134
|
+
### Raw HTTP
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
BASE = "https://webexapis.com/v1"
|
|
138
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
139
|
+
|
|
140
|
+
# List transcripts for a specific meeting (user token)
|
|
141
|
+
resp = requests.get(f"{BASE}/meetingTranscripts",
|
|
142
|
+
headers=headers,
|
|
143
|
+
params={"meetingId": meeting_id})
|
|
144
|
+
transcripts = resp.json().get("items", [])
|
|
145
|
+
# Each item: {"id", "meetingId", "hostEmail", "siteUrl", "startDate", "endDate", ...}
|
|
146
|
+
|
|
147
|
+
# List transcripts org-wide (compliance officer / admin token)
|
|
148
|
+
resp = requests.get(f"{BASE}/admin/meetingTranscripts",
|
|
149
|
+
headers=headers,
|
|
150
|
+
params={"from": "2026-03-01T00:00:00Z", "to": "2026-03-28T00:00:00Z"})
|
|
151
|
+
transcripts = resp.json().get("items", [])
|
|
152
|
+
|
|
153
|
+
# Download a transcript as VTT
|
|
154
|
+
resp = requests.get(f"{BASE}/meetingTranscripts/{transcript_id}/download",
|
|
155
|
+
headers=headers,
|
|
156
|
+
params={"format": "vtt"})
|
|
157
|
+
# resp.text contains the raw VTT file content (NOT JSON)
|
|
158
|
+
with open("transcript.vtt", "w") as f:
|
|
159
|
+
f.write(resp.text)
|
|
160
|
+
|
|
161
|
+
# List snippets (speaker segments) in a transcript
|
|
162
|
+
resp = requests.get(f"{BASE}/meetingTranscripts/{transcript_id}/snippets",
|
|
163
|
+
headers=headers)
|
|
164
|
+
snippets = resp.json().get("items", [])
|
|
165
|
+
# Each snippet: {"id", "text", "personName", "personEmail", "startTime", "endTime", ...}
|
|
166
|
+
|
|
167
|
+
# Get a single snippet
|
|
168
|
+
resp = requests.get(
|
|
169
|
+
f"{BASE}/meetingTranscripts/{transcript_id}/snippets/{snippet_id}",
|
|
170
|
+
headers=headers)
|
|
171
|
+
snippet = resp.json()
|
|
172
|
+
|
|
173
|
+
# Update a snippet (correct the text)
|
|
174
|
+
resp = requests.put(
|
|
175
|
+
f"{BASE}/meetingTranscripts/{transcript_id}/snippets/{snippet_id}",
|
|
176
|
+
headers=headers,
|
|
177
|
+
json={"text": "Corrected text here", "reason": "Typo fix"})
|
|
178
|
+
|
|
179
|
+
# Delete a transcript
|
|
180
|
+
resp = requests.delete(f"{BASE}/meetingTranscripts/{transcript_id}",
|
|
181
|
+
headers=headers,
|
|
182
|
+
json={"reason": "Data retention policy", "comment": "Removing per compliance request"})
|
|
183
|
+
# Returns 204 No Content on success
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 3. Closed Captions
|
|
189
|
+
|
|
190
|
+
**CLI group:** `meeting-captions`
|
|
191
|
+
**API base:** `https://webexapis.com/v1/meetingClosedCaptions`
|
|
192
|
+
|
|
193
|
+
Closed captions are the real-time captions captured during a meeting. They are distinct from transcripts (which are generated post-meeting from audio). Only available for ended meeting instances.
|
|
194
|
+
|
|
195
|
+
### Commands
|
|
196
|
+
|
|
197
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
198
|
+
|---------|-----|------------|-------------|
|
|
199
|
+
| List captions | `wxcli meeting-captions list-meeting-closed-captions` | GET /meetingClosedCaptions | List closed captions for a meeting |
|
|
200
|
+
| List snippets | `wxcli meeting-captions list CAPTION_ID` | GET /meetingClosedCaptions/{closedCaptionId}/snippets | List individual caption segments |
|
|
201
|
+
| Download | `wxcli meeting-captions list-download CAPTION_ID` | GET /meetingClosedCaptions/{closedCaptionId}/download | Download captions as VTT or TXT |
|
|
202
|
+
|
|
203
|
+
### Key Parameters
|
|
204
|
+
|
|
205
|
+
#### `meeting-captions list-meeting-closed-captions`
|
|
206
|
+
|
|
207
|
+
| Option | Description |
|
|
208
|
+
|--------|-------------|
|
|
209
|
+
| `--meeting-id ID` | Meeting instance ID (required). Only works for ended meetings |
|
|
210
|
+
|
|
211
|
+
#### `meeting-captions list`
|
|
212
|
+
|
|
213
|
+
| Option | Description |
|
|
214
|
+
|--------|-------------|
|
|
215
|
+
| `--meeting-id ID` | Meeting instance ID. Only works for ended meetings |
|
|
216
|
+
|
|
217
|
+
#### `meeting-captions list-download`
|
|
218
|
+
|
|
219
|
+
| Option | Description |
|
|
220
|
+
|--------|-------------|
|
|
221
|
+
| `--format FORMAT` | Download format: `vtt` or `txt` |
|
|
222
|
+
| `--meeting-id ID` | Meeting instance ID. Only works for ended meetings |
|
|
223
|
+
| `--timezone TZ` | Timezone for timestamps (e.g., `UTC`, `America/New_York`). Passed as a header |
|
|
224
|
+
|
|
225
|
+
### Raw HTTP
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
BASE = "https://webexapis.com/v1"
|
|
229
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
230
|
+
|
|
231
|
+
# List closed captions for a meeting
|
|
232
|
+
resp = requests.get(f"{BASE}/meetingClosedCaptions",
|
|
233
|
+
headers=headers,
|
|
234
|
+
params={"meetingId": meeting_id})
|
|
235
|
+
captions = resp.json().get("items", [])
|
|
236
|
+
# Each item: {"id", "meetingId", "language", ...}
|
|
237
|
+
|
|
238
|
+
# List caption snippets
|
|
239
|
+
resp = requests.get(f"{BASE}/meetingClosedCaptions/{caption_id}/snippets",
|
|
240
|
+
headers=headers,
|
|
241
|
+
params={"meetingId": meeting_id})
|
|
242
|
+
snippets = resp.json().get("items", [])
|
|
243
|
+
# Each snippet: {"id", "text", "personName", "personEmail", "startTime", ...}
|
|
244
|
+
|
|
245
|
+
# Download captions as VTT
|
|
246
|
+
resp = requests.get(f"{BASE}/meetingClosedCaptions/{caption_id}/download",
|
|
247
|
+
headers={**headers, "timezone": "UTC"},
|
|
248
|
+
params={"format": "vtt", "meetingId": meeting_id})
|
|
249
|
+
# resp.text contains the raw VTT file content (NOT JSON)
|
|
250
|
+
with open("captions.vtt", "w") as f:
|
|
251
|
+
f.write(resp.text)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## 4. Chats
|
|
257
|
+
|
|
258
|
+
**CLI group:** `meeting-chats`
|
|
259
|
+
**API base:** `https://webexapis.com/v1/meetings/postMeetingChats`
|
|
260
|
+
|
|
261
|
+
Post-meeting chats are the chat messages participants sent during a meeting. The API path uses `postMeetingChats` — these are only available after the meeting ends. The endpoint does not support in-progress meetings.
|
|
262
|
+
|
|
263
|
+
### Commands
|
|
264
|
+
|
|
265
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
266
|
+
|---------|-----|------------|-------------|
|
|
267
|
+
| List chats | `wxcli meeting-chats list` | GET /meetings/postMeetingChats | List chat messages from a meeting |
|
|
268
|
+
| Delete chats | `wxcli meeting-chats delete` | DELETE /meetings/postMeetingChats | Delete all chats for a meeting |
|
|
269
|
+
|
|
270
|
+
### Key Parameters
|
|
271
|
+
|
|
272
|
+
#### `meeting-chats list`
|
|
273
|
+
|
|
274
|
+
| Option | Description |
|
|
275
|
+
|--------|-------------|
|
|
276
|
+
| `--meeting-id ID` | Meeting instance ID (required). Personal room meeting IDs are not supported |
|
|
277
|
+
| `--max N` | Maximum number of chats per response, up to 100 |
|
|
278
|
+
| `--offset N` | Offset from the first result for pagination |
|
|
279
|
+
|
|
280
|
+
#### `meeting-chats delete`
|
|
281
|
+
|
|
282
|
+
| Option | Description |
|
|
283
|
+
|--------|-------------|
|
|
284
|
+
| `--meeting-id ID` | Meeting instance ID (required). Personal room meeting IDs are not supported |
|
|
285
|
+
|
|
286
|
+
### Raw HTTP
|
|
287
|
+
|
|
288
|
+
```python
|
|
289
|
+
BASE = "https://webexapis.com/v1"
|
|
290
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
291
|
+
|
|
292
|
+
# List post-meeting chats
|
|
293
|
+
resp = requests.get(f"{BASE}/meetings/postMeetingChats",
|
|
294
|
+
headers=headers,
|
|
295
|
+
params={"meetingId": meeting_id, "max": 100})
|
|
296
|
+
chats = resp.json().get("items", [])
|
|
297
|
+
# Each item: {"id", "text", "senderName", "senderEmail", "sentTime", ...}
|
|
298
|
+
|
|
299
|
+
# Delete all chats for a meeting
|
|
300
|
+
resp = requests.delete(f"{BASE}/meetings/postMeetingChats",
|
|
301
|
+
headers=headers,
|
|
302
|
+
params={"meetingId": meeting_id})
|
|
303
|
+
# Returns 204 No Content on success
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Gotchas
|
|
307
|
+
|
|
308
|
+
- **Chats use offset-based pagination**, not cursor-based. Use `--offset` to page through results, unlike most Webex APIs that use `Link` headers.
|
|
309
|
+
- **The delete endpoint removes ALL chats for the meeting** — there is no per-message delete for post-meeting chats.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 5. Meeting Messages
|
|
314
|
+
|
|
315
|
+
**CLI group:** `meeting-messages`
|
|
316
|
+
**API base:** `https://webexapis.com/v1/meeting/messages`
|
|
317
|
+
|
|
318
|
+
This is a compliance-only endpoint for deleting individual messages from a meeting's in-meeting chat. Note the singular `meeting` in the path (not `meetings`).
|
|
319
|
+
|
|
320
|
+
### Commands
|
|
321
|
+
|
|
322
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
323
|
+
|---------|-----|------------|-------------|
|
|
324
|
+
| Delete message | `wxcli meeting-messages delete MESSAGE_ID` | DELETE /meeting/messages/{meetingMessageId} | Delete a specific meeting message (compliance) |
|
|
325
|
+
|
|
326
|
+
### Raw HTTP
|
|
327
|
+
|
|
328
|
+
```python
|
|
329
|
+
BASE = "https://webexapis.com/v1"
|
|
330
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
331
|
+
|
|
332
|
+
# Delete a specific meeting message (compliance officer token required)
|
|
333
|
+
resp = requests.delete(f"{BASE}/meeting/messages/{meeting_message_id}",
|
|
334
|
+
headers=headers)
|
|
335
|
+
# Returns 204 No Content on success
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Gotchas
|
|
339
|
+
|
|
340
|
+
- **This is a compliance endpoint** — it requires admin-level scopes. Regular users cannot delete individual meeting messages.
|
|
341
|
+
- **Note the singular path:** `/meeting/messages/{meetingMessageId}` — not `/meetings/messages/`. This differs from the chats endpoint at `/meetings/postMeetingChats`.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 6. Summaries
|
|
346
|
+
|
|
347
|
+
**CLI group:** `meeting-summaries`
|
|
348
|
+
**API base:** `https://webexapis.com/v1/meetingSummaries`
|
|
349
|
+
|
|
350
|
+
AI-generated meeting summaries produced by the Webex AI Assistant. Two list endpoints exist: one for regular users (by meeting ID) and one for compliance officers (org-wide). Summaries are only available for ended meeting instances — not for meeting series, scheduled meetings, in-progress meetings, or personal room meetings.
|
|
351
|
+
|
|
352
|
+
### Commands
|
|
353
|
+
|
|
354
|
+
| Command | CLI | HTTP Method | What It Does |
|
|
355
|
+
|---------|-----|------------|-------------|
|
|
356
|
+
| List (compliance) | `wxcli meeting-summaries list` | GET /admin/meetingSummaries | Get summary org-wide (compliance officer) |
|
|
357
|
+
| List (user) | `wxcli meeting-summaries list-meeting-summaries` | GET /meetingSummaries | Get summary by meeting ID |
|
|
358
|
+
| Delete | `wxcli meeting-summaries delete SUMMARY_ID` | DELETE /meetingSummaries/{summaryId} | Delete a summary |
|
|
359
|
+
|
|
360
|
+
### Key Parameters
|
|
361
|
+
|
|
362
|
+
#### `meeting-summaries list` (compliance)
|
|
363
|
+
|
|
364
|
+
| Option | Description |
|
|
365
|
+
|--------|-------------|
|
|
366
|
+
| `--meeting-id ID` | Meeting instance ID (required — query is rejected without it) |
|
|
367
|
+
|
|
368
|
+
#### `meeting-summaries list-meeting-summaries` (user)
|
|
369
|
+
|
|
370
|
+
| Option | Description |
|
|
371
|
+
|--------|-------------|
|
|
372
|
+
| `--meeting-id ID` | Meeting instance ID (required — query is rejected without it) |
|
|
373
|
+
|
|
374
|
+
### Raw HTTP
|
|
375
|
+
|
|
376
|
+
```python
|
|
377
|
+
BASE = "https://webexapis.com/v1"
|
|
378
|
+
headers = {"Authorization": f"Bearer {token}"}
|
|
379
|
+
|
|
380
|
+
# Get summary by meeting ID (user token)
|
|
381
|
+
resp = requests.get(f"{BASE}/meetingSummaries",
|
|
382
|
+
headers=headers,
|
|
383
|
+
params={"meetingId": meeting_id})
|
|
384
|
+
summary = resp.json()
|
|
385
|
+
# Returns: {"meetingId", "summary", "keywords", "actionItems", ...}
|
|
386
|
+
|
|
387
|
+
# Get summary for compliance officer (admin token)
|
|
388
|
+
resp = requests.get(f"{BASE}/admin/meetingSummaries",
|
|
389
|
+
headers=headers,
|
|
390
|
+
params={"meetingId": meeting_id})
|
|
391
|
+
summary = resp.json()
|
|
392
|
+
|
|
393
|
+
# Delete a summary
|
|
394
|
+
resp = requests.delete(f"{BASE}/meetingSummaries/{summary_id}",
|
|
395
|
+
headers=headers)
|
|
396
|
+
# Returns 204 No Content on success
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Gotchas
|
|
400
|
+
|
|
401
|
+
- **`meetingId` is required for both list endpoints.** The API rejects the query if `meetingId` is not specified, even though the spec marks it as optional.
|
|
402
|
+
- **Summaries require the Webex AI Assistant feature** to be enabled for the org. If not enabled, these endpoints return empty results or errors.
|
|
403
|
+
- **Only ended meeting instances are supported.** Meeting series IDs, scheduled meeting IDs, in-progress meeting instance IDs, and personal room meeting IDs are all rejected.
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## 7. Recordings (Cross-Reference)
|
|
408
|
+
|
|
409
|
+
Meeting recordings are **not** in the `webex-meetings.json` spec. They are covered by the admin API and managed through the `admin-recordings` CLI group (generated from `specs/webex-admin.json`).
|
|
410
|
+
|
|
411
|
+
See [`admin-apps-data.md`](admin-apps-data.md) for recording management: list recordings, get recording details, download, delete, and move recordings.
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 8. Raw HTTP Endpoints
|
|
416
|
+
|
|
417
|
+
All 16 endpoints covered by the 5 CLI groups in this doc.
|
|
418
|
+
|
|
419
|
+
| Method | Path | CLI Group | CLI Command | Token |
|
|
420
|
+
|--------|------|-----------|-------------|-------|
|
|
421
|
+
| GET | /admin/meetingTranscripts | meeting-transcripts | `list` | Admin |
|
|
422
|
+
| GET | /meetingTranscripts | meeting-transcripts | `list-meeting-transcripts` | User |
|
|
423
|
+
| GET | /meetingTranscripts/{transcriptId}/download | meeting-transcripts | `list-download` | User/Admin |
|
|
424
|
+
| GET | /meetingTranscripts/{transcriptId}/snippets | meeting-transcripts | `list-snippets` | User/Admin |
|
|
425
|
+
| GET | /meetingTranscripts/{transcriptId}/snippets/{snippetId} | meeting-transcripts | `show` | User/Admin |
|
|
426
|
+
| PUT | /meetingTranscripts/{transcriptId}/snippets/{snippetId} | meeting-transcripts | `update` | User/Admin |
|
|
427
|
+
| DELETE | /meetingTranscripts/{transcriptId} | meeting-transcripts | `delete` | User/Admin |
|
|
428
|
+
| GET | /meetingClosedCaptions | meeting-captions | `list-meeting-closed-captions` | User |
|
|
429
|
+
| GET | /meetingClosedCaptions/{closedCaptionId}/snippets | meeting-captions | `list` | User |
|
|
430
|
+
| GET | /meetingClosedCaptions/{closedCaptionId}/download | meeting-captions | `list-download` | User |
|
|
431
|
+
| GET | /meetings/postMeetingChats | meeting-chats | `list` | User |
|
|
432
|
+
| DELETE | /meetings/postMeetingChats | meeting-chats | `delete` | User/Admin |
|
|
433
|
+
| DELETE | /meeting/messages/{meetingMessageId} | meeting-messages | `delete` | Admin |
|
|
434
|
+
| GET | /admin/meetingSummaries | meeting-summaries | `list` | Admin |
|
|
435
|
+
| GET | /meetingSummaries | meeting-summaries | `list-meeting-summaries` | User |
|
|
436
|
+
| DELETE | /meetingSummaries/{summaryId} | meeting-summaries | `delete` | User/Admin |
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 9. Gotchas
|
|
441
|
+
|
|
442
|
+
These issues span multiple meeting content API surfaces. Check per-section Gotchas for endpoint-specific notes.
|
|
443
|
+
|
|
444
|
+
1. **Admin vs user list endpoints.** Transcripts and summaries each have two list paths: `/admin/meetingTranscripts` and `/admin/meetingSummaries` require admin tokens with compliance officer scopes and return org-wide results. The non-admin paths (`/meetingTranscripts`, `/meetingSummaries`) use user tokens and return results scoped to the authenticated user's meetings.
|
|
445
|
+
|
|
446
|
+
2. **Download endpoints return raw file content, not JSON.** Both `meeting-transcripts list-download` and `meeting-captions list-download` return the raw VTT or TXT file body. The response `Content-Type` will be `text/vtt` or `text/plain`, not `application/json`. Parse accordingly.
|
|
447
|
+
|
|
448
|
+
3. **Chats endpoint path is `postMeetingChats`.** The API path is `/meetings/postMeetingChats`, not `/meetings/chats`. These chats are only available after the meeting ends — in-progress meetings return no results.
|
|
449
|
+
|
|
450
|
+
4. **Meeting messages uses singular `/meeting/messages/` path.** This is distinct from the chats path at `/meetings/postMeetingChats`. The singular path is a compliance-only delete endpoint for individual in-meeting messages.
|
|
451
|
+
|
|
452
|
+
5. **Personal room meeting IDs are not supported** across most of these endpoints. Transcript lists, caption lists, chat lists, and summary queries all explicitly reject personal room meeting IDs. Use only meeting instance IDs from ended meetings.
|
|
453
|
+
|
|
454
|
+
6. **Transcript snippet update only allows editing `text` and `reason`.** You cannot change the speaker attribution, timestamps, or other metadata on a snippet — only the transcribed text (for corrections) and an optional reason for the edit.
|
|
455
|
+
|
|
456
|
+
7. **Transcript delete accepts a request body** (with `reason` and `comment` fields) even though it is a DELETE request. Most REST APIs do not use request bodies on DELETE — this is an unusual pattern.
|
|
457
|
+
|
|
458
|
+
8. **Summaries require Webex AI Assistant.** The meeting summaries endpoints only return data if the org has the AI Assistant feature enabled and the meeting was configured to generate a summary. Without this feature, the endpoints return empty results.
|
|
459
|
+
|
|
460
|
+
9. **Caption snippets vs transcript snippets are separate resources.** Even though both represent text segments of meeting content, captions (`/meetingClosedCaptions/{id}/snippets`) and transcript snippets (`/meetingTranscripts/{id}/snippets`) are different API surfaces with different IDs. Captions are captured in real-time; transcripts are generated post-meeting from audio.
|
|
461
|
+
|
|
462
|
+
10. **Chats use offset-based pagination.** Unlike most Webex APIs that use cursor-based pagination with `Link` headers, the post-meeting chats endpoint uses `--offset` and `--max` for paging.
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
## 10. See Also
|
|
467
|
+
|
|
468
|
+
- [`meetings-core.md`](meetings-core.md) — Meeting CRUD, templates, controls, registrants, interpreters, breakouts, surveys
|
|
469
|
+
- [`meetings-settings.md`](meetings-settings.md) — Preferences, session types, tracking codes, site settings, polls, Q&A, reports
|
|
470
|
+
- [`meetings-infrastructure.md`](meetings-infrastructure.md) — Video Mesh (clusters, nodes, health, utilization), participants, invitees
|
|
471
|
+
- [`admin-apps-data.md`](admin-apps-data.md) — Recording management (`admin-recordings` CLI group): list, download, delete, and move meeting recordings
|
|
472
|
+
- [`webhooks-events.md`](webhooks-events.md) — Webhook CRUD and event payloads for meeting events (`meetings`, `recordings`)
|
|
473
|
+
- [`authentication.md`](authentication.md) — Token types, scopes, admin vs user vs compliance officer tokens
|