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,383 @@
|
|
|
1
|
+
# Admin: Hybrid Infrastructure & Analytics
|
|
2
|
+
|
|
3
|
+
Hybrid cluster/connector monitoring, historical analytics, live meeting monitoring, and meeting quality analysis.
|
|
4
|
+
|
|
5
|
+
## Sources
|
|
6
|
+
|
|
7
|
+
- `specs/webex-admin.json` -- OpenAPI 3.0 spec for admin/org management APIs (hybrid clusters, hybrid connectors, analytics, meeting qualities, live monitoring)
|
|
8
|
+
- [Webex Hybrid Services](https://developer.webex.com/docs/api/v1/hybrid-clusters) -- Official API docs
|
|
9
|
+
- [Meeting Qualities API](https://developer.webex.com/docs/api/v1/meeting-qualities) -- Official API docs
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Required Scopes
|
|
14
|
+
|
|
15
|
+
| Scope | Purpose |
|
|
16
|
+
|-------|---------|
|
|
17
|
+
| `spark-admin:hybrid_clusters_read` | List and get details for hybrid clusters. |
|
|
18
|
+
| `spark-admin:hybrid_connectors_read` | List and get details for hybrid connectors. |
|
|
19
|
+
| `analytics:read_all` | Access historical analytics (messaging, room devices, meetings). Also required for live monitoring and meeting qualities. |
|
|
20
|
+
|
|
21
|
+
**Admin requirement:** The authenticated user must be a full or read-only administrator for the organization.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. Hybrid Clusters
|
|
26
|
+
|
|
27
|
+
Hybrid clusters represent on-premises infrastructure nodes registered to Webex (e.g., Expressway, calendar connector hosts). Use these commands to inventory and monitor cluster health.
|
|
28
|
+
|
|
29
|
+
### CLI Commands
|
|
30
|
+
|
|
31
|
+
| Command | Description | Key Options |
|
|
32
|
+
|---------|-------------|-------------|
|
|
33
|
+
| `wxcli hybrid-clusters list` | List all hybrid clusters | `--limit`, `--offset`, `-o table\|json` |
|
|
34
|
+
| `wxcli hybrid-clusters show <id>` | Get details for a specific cluster | `-o table\|json` |
|
|
35
|
+
|
|
36
|
+
### CLI Examples
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# List all hybrid clusters in the org
|
|
40
|
+
wxcli hybrid-clusters list
|
|
41
|
+
|
|
42
|
+
# List clusters as JSON for scripting
|
|
43
|
+
wxcli hybrid-clusters list -o json
|
|
44
|
+
|
|
45
|
+
# Get details for a specific cluster
|
|
46
|
+
wxcli hybrid-clusters show Y2lzY29zcGFyazovL3VzL0hZQlJJRF9DTFVTVEVSLzEyMzQ
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Raw HTTP Fallback
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# List hybrid clusters
|
|
53
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
54
|
+
"https://webexapis.com/v1/hybrid/clusters" | jq '.items[]'
|
|
55
|
+
|
|
56
|
+
# Get cluster details
|
|
57
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
58
|
+
"https://webexapis.com/v1/hybrid/clusters/{hybridClusterId}" | jq .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### API Details
|
|
62
|
+
|
|
63
|
+
| Property | Value |
|
|
64
|
+
|----------|-------|
|
|
65
|
+
| List endpoint | `GET https://webexapis.com/v1/hybrid/clusters` |
|
|
66
|
+
| Detail endpoint | `GET https://webexapis.com/v1/hybrid/clusters/{hybridClusterId}` |
|
|
67
|
+
| Response key (list) | `items` |
|
|
68
|
+
| Table columns | `id`, `name` |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 2. Hybrid Connectors
|
|
73
|
+
|
|
74
|
+
Hybrid connectors are the individual service instances running on hybrid cluster nodes (e.g., Calendar Connector, Call Connector, Management Connector). Each connector belongs to a cluster.
|
|
75
|
+
|
|
76
|
+
### CLI Commands
|
|
77
|
+
|
|
78
|
+
| Command | Description | Key Options |
|
|
79
|
+
|---------|-------------|-------------|
|
|
80
|
+
| `wxcli hybrid-connectors list` | List all hybrid connectors | `--limit`, `--offset`, `-o table\|json` |
|
|
81
|
+
| `wxcli hybrid-connectors show <id>` | Get details for a specific connector | `-o table\|json` |
|
|
82
|
+
|
|
83
|
+
### CLI Examples
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List all connectors
|
|
87
|
+
wxcli hybrid-connectors list
|
|
88
|
+
|
|
89
|
+
# List connectors as JSON
|
|
90
|
+
wxcli hybrid-connectors list -o json
|
|
91
|
+
|
|
92
|
+
# Get details for a specific connector
|
|
93
|
+
wxcli hybrid-connectors show Y2lzY29zcGFyazovL3VzL0hZQlJJRF9DT05ORUNUT1IvMTIz
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Raw HTTP Fallback
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# List hybrid connectors
|
|
100
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
101
|
+
"https://webexapis.com/v1/hybrid/connectors" | jq '.items[]'
|
|
102
|
+
|
|
103
|
+
# Get connector details
|
|
104
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
105
|
+
"https://webexapis.com/v1/hybrid/connectors/{connectorId}" | jq .
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### API Details
|
|
109
|
+
|
|
110
|
+
| Property | Value |
|
|
111
|
+
|----------|-------|
|
|
112
|
+
| List endpoint | `GET https://webexapis.com/v1/hybrid/connectors` |
|
|
113
|
+
| Detail endpoint | `GET https://webexapis.com/v1/hybrid/connectors/{connectorId}` |
|
|
114
|
+
| Response key (list) | `items` |
|
|
115
|
+
| Table columns | `id`, `name` |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 3. Live Monitoring
|
|
120
|
+
|
|
121
|
+
Retrieves live meeting metrics categorized by country. Despite the CLI command name `create`, this is a **read operation** -- the Webex API uses POST for this query, and the generator maps POST to `create`.
|
|
122
|
+
|
|
123
|
+
### CLI Commands
|
|
124
|
+
|
|
125
|
+
| Command | Description | Key Options |
|
|
126
|
+
|---------|-------------|-------------|
|
|
127
|
+
| `wxcli live-monitoring create` | Get live meeting metrics by country | `--site-url`, `--json-body` |
|
|
128
|
+
|
|
129
|
+
### CLI Examples
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# Get live meeting metrics for a specific site
|
|
133
|
+
wxcli live-monitoring create --site-url "mysite.webex.com"
|
|
134
|
+
|
|
135
|
+
# Get live meeting metrics with full JSON body
|
|
136
|
+
wxcli live-monitoring create --json-body '{"siteUrl": "mysite.webex.com"}'
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Raw HTTP Fallback
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
# Get live meeting metrics by country (POST with JSON body)
|
|
143
|
+
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
|
|
144
|
+
-H "Content-Type: application/json" \
|
|
145
|
+
-d '{"siteUrl": "mysite.webex.com"}' \
|
|
146
|
+
"https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry" | jq .
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### API Details
|
|
150
|
+
|
|
151
|
+
| Property | Value |
|
|
152
|
+
|----------|-------|
|
|
153
|
+
| Endpoint | `POST https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry` |
|
|
154
|
+
| Request body | `{"siteUrl": "..."}` (optional) |
|
|
155
|
+
| Method | POST (but semantically a read/query operation) |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 4. Analytics (Historical)
|
|
160
|
+
|
|
161
|
+
Historical analytics covering messaging activity, room device usage, and meeting aggregates. Three separate commands query three different metric endpoints.
|
|
162
|
+
|
|
163
|
+
### KNOWN BUG: `/v1/v1/` Double-Path
|
|
164
|
+
|
|
165
|
+
All three `analytics` commands have a confirmed bug in the generated code: the URL contains `/v1/v1/` instead of `/v1/`. For example, the `show` command hits `https://webexapis.com/v1/v1/analytics/messagingMetrics/dailyTotals` instead of the correct `https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals`. This causes all three commands to fail at runtime with a 404 or routing error.
|
|
166
|
+
|
|
167
|
+
**Workaround:** Use raw HTTP (curl) until a fixed release.
|
|
168
|
+
|
|
169
|
+
**Affected commands:**
|
|
170
|
+
- `wxcli analytics show` -- path: `/v1/v1/analytics/messagingMetrics/dailyTotals` (should be `/v1/analytics/messagingMetrics/dailyTotals`)
|
|
171
|
+
- `wxcli analytics show-daily-totals` -- path: `/v1/v1/analytics/roomDeviceMetrics/dailyTotals` (should be `/v1/analytics/roomDeviceMetrics/dailyTotals`)
|
|
172
|
+
- `wxcli analytics show-aggregates` -- path: `/v1/v1/analytics/meetingsMetrics/aggregates` (should be `/v1/analytics/meetingsMetrics/aggregates`)
|
|
173
|
+
|
|
174
|
+
### CLI Commands
|
|
175
|
+
|
|
176
|
+
| Command | Description | Key Options |
|
|
177
|
+
|---------|-------------|-------------|
|
|
178
|
+
| `wxcli analytics show` | Messaging historical data (daily totals) | `--from`, `--to`, `-o json` |
|
|
179
|
+
| `wxcli analytics show-daily-totals` | Room device historical data (daily totals) | `--from`, `--to`, `-o json` |
|
|
180
|
+
| `wxcli analytics show-aggregates` | Meeting historical data (aggregates) | `--site-url` (required), `--from`, `--to`, `-o json` |
|
|
181
|
+
|
|
182
|
+
### CLI Examples (will fail until bug is fixed)
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Messaging metrics for a date range
|
|
186
|
+
wxcli analytics show --from 2026-03-01 --to 2026-03-15
|
|
187
|
+
|
|
188
|
+
# Room device metrics
|
|
189
|
+
wxcli analytics show-daily-totals --from 2026-03-01 --to 2026-03-15
|
|
190
|
+
|
|
191
|
+
# Meeting aggregates for a specific site (--site-url is required)
|
|
192
|
+
wxcli analytics show-aggregates --site-url "mysite.webex.com" --from 2026-03-01 --to 2026-03-15
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Raw HTTP Fallback (use these until the CLI bug is fixed)
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Messaging metrics -- daily totals
|
|
199
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
200
|
+
"https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals?from=2026-03-01&to=2026-03-15" | jq .
|
|
201
|
+
|
|
202
|
+
# Room device metrics -- daily totals
|
|
203
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
204
|
+
"https://webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals?from=2026-03-01&to=2026-03-15" | jq .
|
|
205
|
+
|
|
206
|
+
# Meeting metrics -- aggregates (siteUrl is required)
|
|
207
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
208
|
+
"https://webexapis.com/v1/analytics/meetingsMetrics/aggregates?siteUrl=mysite.webex.com&from=2026-03-01&to=2026-03-15" | jq .
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### API Details
|
|
212
|
+
|
|
213
|
+
| Endpoint | Method | Description |
|
|
214
|
+
|----------|--------|-------------|
|
|
215
|
+
| `/v1/analytics/messagingMetrics/dailyTotals` | GET | Daily messaging activity totals |
|
|
216
|
+
| `/v1/analytics/roomDeviceMetrics/dailyTotals` | GET | Daily room device usage totals |
|
|
217
|
+
| `/v1/analytics/meetingsMetrics/aggregates` | GET | Meeting aggregate metrics (requires `siteUrl`) |
|
|
218
|
+
|
|
219
|
+
### Query Parameters
|
|
220
|
+
|
|
221
|
+
| Parameter | Type | Required | Description |
|
|
222
|
+
|-----------|------|----------|-------------|
|
|
223
|
+
| `from` | UTC date string | No | Start date for the historical data window |
|
|
224
|
+
| `to` | UTC date string | No | End date for the historical data window |
|
|
225
|
+
| `siteUrl` | string | Meetings only | URL of the Webex site (required for `meetingsMetrics/aggregates`) |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 5. Meeting Qualities
|
|
230
|
+
|
|
231
|
+
Retrieves media quality metrics for a specific meeting instance, including jitter, latency, and packet loss data per media session.
|
|
232
|
+
|
|
233
|
+
### CLI Commands
|
|
234
|
+
|
|
235
|
+
| Command | Description | Key Options |
|
|
236
|
+
|---------|-------------|-------------|
|
|
237
|
+
| `wxcli meeting-qualities list` | Get meeting quality metrics | `--meeting-id`, `--max`, `--offset`, `--limit`, `-o table\|json` |
|
|
238
|
+
|
|
239
|
+
### CLI Examples
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# Get quality metrics for a specific meeting
|
|
243
|
+
wxcli meeting-qualities list --meeting-id "a]b1c2d3e4f5"
|
|
244
|
+
|
|
245
|
+
# Get quality metrics as JSON
|
|
246
|
+
wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json
|
|
247
|
+
|
|
248
|
+
# Limit results
|
|
249
|
+
wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" --max 10
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Raw HTTP Fallback
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Get meeting quality data
|
|
256
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
257
|
+
"https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6" | jq .
|
|
258
|
+
|
|
259
|
+
# With pagination
|
|
260
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
261
|
+
"https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6&max=10&offset=0" | jq .
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### API Details
|
|
265
|
+
|
|
266
|
+
| Property | Value |
|
|
267
|
+
|----------|-------|
|
|
268
|
+
| Endpoint | `GET https://webexapis.com/v1/meeting/qualities` |
|
|
269
|
+
| Response key | `items` |
|
|
270
|
+
| Table columns | `id`, `name` (default -- actual response fields may differ) |
|
|
271
|
+
|
|
272
|
+
### Query Parameters
|
|
273
|
+
|
|
274
|
+
| Parameter | Type | Required | Description |
|
|
275
|
+
|-----------|------|----------|-------------|
|
|
276
|
+
| `meetingId` | string | Yes (effectively) | Unique identifier for the meeting instance |
|
|
277
|
+
| `max` | int | No | Maximum number of media sessions to return |
|
|
278
|
+
| `offset` | int | No | Offset for pagination |
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Recipes
|
|
283
|
+
|
|
284
|
+
### Monitor hybrid connector health across the org
|
|
285
|
+
|
|
286
|
+
List all connectors, then inspect any that show issues.
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
# Step 1: List all connectors
|
|
290
|
+
wxcli hybrid-connectors list -o json | jq '.[] | {id, hostname, status: .status.state}'
|
|
291
|
+
|
|
292
|
+
# Step 2: Get details on a specific connector that looks unhealthy
|
|
293
|
+
wxcli hybrid-connectors show <connector-id> -o json | jq '{hostname, status, version, cluster}'
|
|
294
|
+
|
|
295
|
+
# Step 3: Cross-reference with the parent cluster
|
|
296
|
+
wxcli hybrid-clusters show <cluster-id>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Raw HTTP version (if CLI is unavailable):
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# List all connectors and filter for non-running states
|
|
303
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
304
|
+
"https://webexapis.com/v1/hybrid/connectors" | \
|
|
305
|
+
jq '.items[] | select(.status.state != "running") | {id, hostname, state: .status.state}'
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Pull historical analytics for messaging/meetings/devices
|
|
309
|
+
|
|
310
|
+
Due to the `/v1/v1/` bug in the CLI, use raw HTTP for now.
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# Messaging activity over the last 30 days
|
|
314
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
315
|
+
"https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals?from=2026-02-17&to=2026-03-19" | jq .
|
|
316
|
+
|
|
317
|
+
# Room device usage over the last 7 days
|
|
318
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
319
|
+
"https://webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals?from=2026-03-12&to=2026-03-19" | jq .
|
|
320
|
+
|
|
321
|
+
# Meeting aggregates for a site
|
|
322
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
323
|
+
"https://webexapis.com/v1/analytics/meetingsMetrics/aggregates?siteUrl=mysite.webex.com&from=2026-03-01&to=2026-03-19" | jq .
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Investigate meeting quality issues (jitter, latency, packet loss)
|
|
327
|
+
|
|
328
|
+
You need a `meetingId` to query quality data. Get it from the Meetings API or Control Hub.
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
# Step 1: Get quality metrics for a specific meeting
|
|
332
|
+
wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json
|
|
333
|
+
|
|
334
|
+
# Step 2: Parse the response for quality indicators
|
|
335
|
+
wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json | \
|
|
336
|
+
jq '.[] | {participant: .displayName, audioJitter: .mediaQuality.audioJitter, videoPacketLoss: .mediaQuality.videoPacketLoss, latency: .mediaQuality.latency}'
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
Raw HTTP version:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
343
|
+
"https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6" | \
|
|
344
|
+
jq '.items[] | {participant: .displayName, audioJitter: .mediaQuality.audioJitter, videoPacketLoss: .mediaQuality.videoPacketLoss}'
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## Gotchas
|
|
350
|
+
|
|
351
|
+
### `live-monitoring create` is a read operation
|
|
352
|
+
|
|
353
|
+
The `create` command name is misleading. The Webex API uses `POST` for this query endpoint (`/v1/livemonitoring/liveMeetingsByCountry`), and the generator maps all POST operations to `create`. The command reads live meeting metrics -- it does not create anything.
|
|
354
|
+
|
|
355
|
+
### All groups are read-only
|
|
356
|
+
|
|
357
|
+
None of these 5 command groups have write operations. There are no `update`, `delete`, or true `create` commands. The `live-monitoring create` is the only POST, and it is semantically a read (see above).
|
|
358
|
+
|
|
359
|
+
### Meeting quality requires a specific `meetingId`
|
|
360
|
+
|
|
361
|
+
The `meeting-qualities list` command is effectively useless without `--meeting-id`. Without it, the API may return an error or empty results. You need to obtain the meeting ID from the Meetings API (`wxcli meetings list` or the Control Hub meeting history) before querying quality data.
|
|
362
|
+
|
|
363
|
+
### CONFIRMED BUG: `analytics` commands have a `/v1/v1/` double-path
|
|
364
|
+
|
|
365
|
+
All three `analytics` commands (`show`, `show-daily-totals`, `show-aggregates`) generate URLs with `/v1/v1/` instead of `/v1/`. This is a generator bug -- the OpenAPI spec paths already include `/v1/`, and the generator prepends the base URL which also ends in `/v1`. The result is a broken double-path like `https://webexapis.com/v1/v1/analytics/messagingMetrics/dailyTotals`.
|
|
366
|
+
|
|
367
|
+
**Impact:** All three commands fail at runtime. Use raw HTTP (curl) as shown in the fallback examples above.
|
|
368
|
+
|
|
369
|
+
**Fix:** tracked as a generator bug; until a fixed release, use the raw HTTP workaround above
|
|
370
|
+
|
|
371
|
+
### Scope troubleshooting
|
|
372
|
+
|
|
373
|
+
- **`spark-admin:hybrid_clusters_read`** and **`spark-admin:hybrid_connectors_read`** are separate scopes. Having one does not grant the other.
|
|
374
|
+
- **`analytics:read_all`** covers analytics, meeting qualities, and live monitoring. If you get a 403, verify this scope is included in your token and that the authenticated user has admin privileges.
|
|
375
|
+
- Hybrid scopes require the org to have hybrid services deployed. If no hybrid infrastructure exists, the list endpoints return empty results (not an error).
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## See Also
|
|
380
|
+
|
|
381
|
+
- `docs/reference/reporting-analytics.md` -- CDR feed, report templates, call quality/queue/AA statistics
|
|
382
|
+
- `docs/reference/authentication.md` -- Token types, scopes, OAuth flows
|
|
383
|
+
- `docs/reference/archive/wxcadm-core.md` -- wxcadm org/auth patterns (alternative to raw HTTP; archived historical SDK doc)
|