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,373 @@
|
|
|
1
|
+
# Webex Calling Playbook
|
|
2
|
+
|
|
3
|
+
Build and configure Webex Calling, admin, device, and messaging APIs programmatically with guided Claude Code assistance.
|
|
4
|
+
|
|
5
|
+
**Execution pattern:** `wxcli` CLI commands (primary) → raw HTTP (fallback).
|
|
6
|
+
The wxcli CLI has 178 command groups covering calling, admin, device, messaging, meetings, and contact center APIs. Raw HTTP docs in `docs/reference/` serve as reference and fallback.
|
|
7
|
+
|
|
8
|
+
## Mandatory Grounding Rule
|
|
9
|
+
|
|
10
|
+
**Never answer any question about Webex Calling from training data alone.**
|
|
11
|
+
|
|
12
|
+
For every question — capability, configuration, behavior, limits, or anything else — you MUST either:
|
|
13
|
+
1. Invoke the relevant skill (`configure-features`, `customer-assist`, `contact-center`, etc.), OR
|
|
14
|
+
2. Read the relevant reference doc in `docs/reference/`
|
|
15
|
+
|
|
16
|
+
The reference docs and skills are the authoritative source for this project. Training data about Cisco/Webex products is unreliable — product tiers get conflated, feature names change, and capabilities vary by license. If the answer isn't in the docs or skills, say so explicitly rather than filling the gap from training data.
|
|
17
|
+
|
|
18
|
+
## Execution Discipline
|
|
19
|
+
|
|
20
|
+
- **Verify before claiming done.** Run the command, check the output, confirm the state. Never report success from inference alone. Ask yourself: "Would a staff engineer approve this?"
|
|
21
|
+
- **When a plan breaks, stop and re-plan.** Don't push through a failing approach — re-assess, update the plan, then resume.
|
|
22
|
+
- **Bug fixes: just fix it.** When the reproduction is clear (logs, errors, failing tests), resolve without asking for hand-holding. For ambiguous or architectural bugs, propose first.
|
|
23
|
+
- **Learn from every correction.** After any user correction, save a feedback memory capturing the pattern and why it matters. Write the rule so it prevents the same mistake in future sessions — not just this one.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
You MUST use `/agents` and select **wxc-calling-builder**. This is the primary interface for all operations.
|
|
30
|
+
The agent walks you through authentication, interviews you about what you want to build, designs
|
|
31
|
+
a deployment plan, executes via `wxcli` commands, and verifies the results. **Do not run `wxcli`
|
|
32
|
+
commands directly** — the agent handles the full workflow.
|
|
33
|
+
|
|
34
|
+
**To build or configure Webex Calling:** `/agents` → wxc-calling-builder → describe what you want.
|
|
35
|
+
|
|
36
|
+
**To migrate from CUCM:** `/agents` → wxc-calling-builder → "Run a CUCM migration" and provide
|
|
37
|
+
the CUCM host/credentials. The agent runs the full pipeline: discover → normalize → map → analyze
|
|
38
|
+
→ resolve addresses → review decisions → plan → execute → verify. See the CUCM migration section
|
|
39
|
+
below for what the pipeline does. Pipeline and tool details in `.claude/rules/cucm-migration.md` (path-scoped).
|
|
40
|
+
|
|
41
|
+
**To debug a failing configuration:** Use `/wxc-calling-debug` (this one is a skill, invoked directly).
|
|
42
|
+
|
|
43
|
+
**To query live org state:** Use `/query-live` for read-only questions about the current environment ("who has call forwarding enabled?", "which locations have no users?", "show me all hunt groups").
|
|
44
|
+
|
|
45
|
+
**To audit org health:** `/agents` → wxc-calling-builder → "audit my org". The `org-health` skill orchestrates collection, analysis, and HTML report generation.
|
|
46
|
+
|
|
47
|
+
### Agent Invocation Pattern
|
|
48
|
+
|
|
49
|
+
wxc-calling-builder is a **phase-per-invocation** agent. Each major phase runs as a
|
|
50
|
+
fresh agent invocation — do NOT resume agents via `SendMessage` for multi-phase workflows.
|
|
51
|
+
|
|
52
|
+
**Invocation rules:**
|
|
53
|
+
- Always spawn a fresh agent for each phase
|
|
54
|
+
- Pass current state in the prompt: project name, current pipeline stage, key context
|
|
55
|
+
- The agent reads state from disk on startup and validates against the prompt
|
|
56
|
+
- For single-phase work (quick config, one-off query), one invocation is sufficient
|
|
57
|
+
|
|
58
|
+
**What constitutes a phase boundary:** Any point where the agent writes state to disk and the next step is conceptually independent. Typical boundaries: auth complete → provisioning starts, provisioning complete → feature configuration starts, discovery complete → analysis starts. If the next step needs results from the current step but could be described to a fresh agent in one sentence, it's a new phase.
|
|
59
|
+
|
|
60
|
+
**When SendMessage IS appropriate:** Simple follow-ups within a single phase — "also add voicemail to that user", "change the extension to 2001 instead". The agent still has the right context. Do NOT use SendMessage across phase boundaries or after long silences; the agent may have lost context or died mid-tool-call.
|
|
61
|
+
|
|
62
|
+
**Prompt template for fresh phase invocations:**
|
|
63
|
+
```
|
|
64
|
+
"Project: [name]. Current state: [stage, e.g. 'provisioning complete, 3 users + 2 locations created'].
|
|
65
|
+
Next: [what to do]. Key context: [anything the agent needs that isn't on disk]."
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**CUCM migration invocation example:** See `.claude/rules/cucm-migration.md` for the phase-by-phase spawning pattern.
|
|
69
|
+
|
|
70
|
+
### Agent Model Selection
|
|
71
|
+
|
|
72
|
+
The builder agent base context is ~40k tokens. Choose the model to match the task complexity:
|
|
73
|
+
|
|
74
|
+
| Task type | Model | Why |
|
|
75
|
+
|-----------|-------|-----|
|
|
76
|
+
| Cleanup, teardown, batch delete | `haiku` | All logic is in `wxcli cleanup run` — agent just picks flags and runs it |
|
|
77
|
+
| Simple read-only checks (list users, verify resource) | `sonnet` with minimal prompt (1-2 sentences) | Base context load is unavoidable; keep prompt short to minimize output tokens |
|
|
78
|
+
| Standard provisioning, feature config, single-phase builds | `sonnet` (default) | Good balance of capability and cost |
|
|
79
|
+
| Multi-phase CUCM migration, complex routing, architectural decisions | `opus` | Needs reasoning about dependencies, cross-feature interactions |
|
|
80
|
+
| Batch multiple simple checks into one agent call | `sonnet` | One agent with 3 checks < three separate agent spawns |
|
|
81
|
+
|
|
82
|
+
**Anti-patterns:**
|
|
83
|
+
- Never use Haiku for implementation subagents — it misses details and produces rework
|
|
84
|
+
- Don't spawn a full builder agent just to run one `wxcli` read command — keep the prompt minimal
|
|
85
|
+
- Don't spawn separate agents for each simple check — batch them
|
|
86
|
+
|
|
87
|
+
### Inline IDs in Commands
|
|
88
|
+
|
|
89
|
+
Always inline resource IDs directly as arguments. Never use multi-line shell variable assignments before wxcli commands.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# WRONG — multi-line breaks permission prefix matching
|
|
93
|
+
HQ="Y2lz..."
|
|
94
|
+
wxcli dect-devices show "$HQ"
|
|
95
|
+
|
|
96
|
+
# RIGHT — inline the ID
|
|
97
|
+
wxcli dect-devices show "Y2lz..."
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Why:** Permission rules use prefix matching. A variable assignment line before `wxcli` means the command string doesn't start with `wxcli`, so it won't match `Bash(wxcli:*)` permission patterns, triggering unnecessary prompts.
|
|
101
|
+
|
|
102
|
+
### Agent Orchestration — Long-Running Work & Silence Detection
|
|
103
|
+
|
|
104
|
+
Added 2026-04-15 after an org-cleanup subagent died mid-Phase-2 when its Python polling loop exceeded Bash's 10-min timeout. Parent sent two `SendMessage` pings that received no response because the subagent's tool call was still in flight and then terminated; the agent loop never got a chance to resume and handle the messages. Root cause recovery required spawning a fresh agent to verify org state and finish the job. This protocol **complements** — does not replace — the phase-per-invocation rule above.
|
|
105
|
+
|
|
106
|
+
#### For subagents running long-running work (>2 min expected)
|
|
107
|
+
|
|
108
|
+
1. **Never wrap long-running polling in a single Bash call.** The Bash tool has a ~10-min hard timeout; if the tool call runs longer, stdout buffering hides progress and the subagent dies silently when the kernel kills the process. The agent loop never resumes to produce a final message, so the parent sees silence.
|
|
109
|
+
2. **Split into discrete tool calls.** One Bash call per polling round (not 20 rounds in one call). Between rounds, the agent loop can emit progress messages.
|
|
110
|
+
3. **Use `run_in_background: true` on Bash** for genuinely long-running commands (e.g., `wxcli cucm execute` that runs >5 min); monitor the task output file (but do not `tail`/Read large JSONL transcripts — use targeted line ranges only).
|
|
111
|
+
4. **Emit progress explicitly.** At minimum every 60s, the subagent should produce a visible message (text output, not a tool call) so observers see aliveness.
|
|
112
|
+
|
|
113
|
+
#### For parent agents when a subagent goes silent
|
|
114
|
+
|
|
115
|
+
1. **Wait up to 5 min** of silence before investigating — normal operations can have gaps.
|
|
116
|
+
2. **After 5 min silence, read the subagent's transcript directly** at `~/.claude/projects/<project-hash>/subagents/agent-<id>.jsonl`. Check:
|
|
117
|
+
- Last entry type: `tool_use` with no paired `tool_result` → subagent is blocked in a tool call (likely Bash timeout pending).
|
|
118
|
+
- Last entry is `assistant` text → subagent thinking, give it more time.
|
|
119
|
+
3. **Do NOT use `SendMessage` to ping a subagent blocked in a tool call.** `SendMessage` cannot interrupt an in-flight tool call; the message queues to a dead mailbox.
|
|
120
|
+
4. **If the subagent is dead** (transcript ends on unpaired `tool_use`), spawn a fresh agent to continue the work from current state. Do not wait longer.
|
|
121
|
+
5. **Check external state** via a fresh diagnostic agent (e.g., "run `wxcli locations list`") rather than trusting the dead subagent's last self-reported state.
|
|
122
|
+
|
|
123
|
+
## File Map
|
|
124
|
+
|
|
125
|
+
### Agent & Skills
|
|
126
|
+
|
|
127
|
+
| Path | Purpose |
|
|
128
|
+
|------|---------|
|
|
129
|
+
| `.claude/agents/wxc-calling-builder.md` | Main builder agent — drives the full workflow |
|
|
130
|
+
| `.claude/agents/migration-advisor.md` | Opus-powered CCIE-level migration advisor — architectural reasoning + decision review |
|
|
131
|
+
| `.claude/skills/provision-calling/` | Skill: provision users, locations, licenses |
|
|
132
|
+
| `.claude/skills/teardown/` | Skill: dependency-safe teardown, `wxcli cleanup`, manual deletion procedure |
|
|
133
|
+
| `.claude/skills/configure-features/` | Skill: set up call features (AA, CQ, HG, etc.; Customer Assist → see customer-assist skill) |
|
|
134
|
+
| `.claude/skills/customer-assist/` | Skill: configure Customer Assist (screen pop, wrap-up, recording, supervisors) |
|
|
135
|
+
| `.claude/skills/manage-call-settings/` | Skill: configure person/workspace call settings, phone number add/remove/reassign |
|
|
136
|
+
| `.claude/skills/configure-routing/` | Skill: configure routing (trunks, dial plans, PSTN) |
|
|
137
|
+
| `.claude/skills/manage-devices/` | Skill: manage devices (phones, DECT, workspaces) |
|
|
138
|
+
| `.claude/skills/device-platform/` | Skill: manage PhoneOS/RoomOS device configs, workspace personalization, xAPI; 9800-series phones (9811/9821/9841/9851/9861/9871) use PhoneOS (not RoomOS) |
|
|
139
|
+
| `.claude/skills/call-control/` | Skill: real-time call control, webhooks, XSI |
|
|
140
|
+
| `.claude/skills/reporting/` | Skill: CDR query engine (75 recipes + composition guide), report templates, recordings |
|
|
141
|
+
| `.claude/skills/reporting-cc/` | Skill: Contact Center analytics (queue stats, agent stats, EWT, summaries) |
|
|
142
|
+
| `.claude/skills/reporting-meetings/` | Skill: meetings quality, workspace metrics, historical analytics, live monitoring |
|
|
143
|
+
| `.claude/skills/wxc-calling-debug/` | Skill: debug failing configurations |
|
|
144
|
+
| `.claude/skills/manage-identity/` | Skill: SCIM sync, directory, groups, contacts, domains |
|
|
145
|
+
| `.claude/skills/audit-compliance/` | Skill: audit events, security, compliance, authorizations |
|
|
146
|
+
| `.claude/skills/manage-licensing/` | Skill: license audit, assignment, reclamation |
|
|
147
|
+
| `.claude/skills/messaging-spaces/` | Skill: manage spaces, teams, memberships, ECM, HDS |
|
|
148
|
+
| `.claude/skills/messaging-bots/` | Skill: build bots, adaptive cards, webhooks, cross-domain integrations |
|
|
149
|
+
| `.claude/skills/manage-meetings/` | Skill: schedule, manage, query meetings + content |
|
|
150
|
+
| `.claude/skills/video-mesh/` | Skill: Video Mesh monitoring and threshold configuration |
|
|
151
|
+
| `.claude/skills/contact-center/` | Skill: CC provisioning (agents, queues, entry points, dial numbers, flows, campaigns) |
|
|
152
|
+
| `.claude/skills/org-health/` | Skill: org health assessment — collect, analyze 18 checks, HTML report |
|
|
153
|
+
| `.claude/skills/cucm-migrate/` | Skill: execute CUCM-to-Webex migration from exported deployment plan |
|
|
154
|
+
| `.claude/skills/query-live/` | Skill: read-only natural language queries against live Webex Calling state |
|
|
155
|
+
|
|
156
|
+
### Skill Disambiguation
|
|
157
|
+
|
|
158
|
+
When multiple skills could match, use this lookup:
|
|
159
|
+
|
|
160
|
+
| If the user wants to... | Use this skill | NOT this one |
|
|
161
|
+
|--------------------------|---------------|-------------|
|
|
162
|
+
| Configure Customer Assist (screen pop, wrap-up, supervisors) | `customer-assist` | `configure-features` (CX queues are a separate skill) |
|
|
163
|
+
| Create a call queue, hunt group, or auto attendant | `configure-features` | `customer-assist` (only for CX Essentials features) |
|
|
164
|
+
| Set person call forwarding, DND, voicemail, caller ID | `manage-call-settings` | `configure-features` (person settings ≠ call features) |
|
|
165
|
+
| Add/remove phone numbers on a user, number reassignment | `manage-call-settings` | `provision-calling` (that's for initial user/license creation) |
|
|
166
|
+
| Update user profile fields (alternate numbers, display name) | `provision-calling` | `manage-call-settings` (profile fields are People API, not telephony config) |
|
|
167
|
+
| Configure voicemail groups (shared location mailbox) | `configure-features` | `manage-call-settings` (voicemail groups are a location feature) |
|
|
168
|
+
| Provision MPP phones, DECT, activation codes | `manage-devices` | `device-platform` (that's for config keys, not provisioning) |
|
|
169
|
+
| Set 9800-series PhoneOS config keys, xAPI commands | `device-platform` | `manage-devices` (that's for provisioning, not config) |
|
|
170
|
+
| Query Webex Calling CDR, call quality, queue stats | `reporting` | `reporting-cc` (that's Contact Center only) |
|
|
171
|
+
| Query Contact Center agent/queue analytics | `reporting-cc` | `reporting` (that's Calling only) |
|
|
172
|
+
| Query meeting quality, workspace utilization | `reporting-meetings` | `reporting` (different API domain) |
|
|
173
|
+
| Delete/clean up resources | `teardown` | `provision-calling` (that's for creation) |
|
|
174
|
+
| Provision users, locations, licenses | `provision-calling` | `teardown` (that's for deletion) |
|
|
175
|
+
| Map numbers to CC entry points, CC dial numbers | `contact-center` | `configure-routing` (that's Calling routing, not CC routing) |
|
|
176
|
+
| CC entry points, teams, skills, agents, queues, flows | `contact-center` | `configure-features` (that's Calling features, not CC) |
|
|
177
|
+
| **Calling vs CC terminology — when the same word means different things:** | | |
|
|
178
|
+
| "Create a queue" (Calling call queue) | `configure-features` | `contact-center` (that's CC queues — different API, different entity) |
|
|
179
|
+
| "Create a queue" (Contact Center queue) | `contact-center` | `configure-features` (that's Calling queues — no skill-based routing) |
|
|
180
|
+
| "Set up a dial plan" (Calling outbound routing) | `configure-routing` | `contact-center` (CC dial plans map DNs to entry points, different API) |
|
|
181
|
+
| "Set up a dial plan" (CC DN-to-entry-point mapping) | `contact-center` | `configure-routing` (that's Calling outbound routing) |
|
|
182
|
+
| "Create a team" (Messaging spaces) | `messaging-spaces` | `contact-center` (CC teams group agents for routing) |
|
|
183
|
+
| "Create a team" (CC agent grouping) | `contact-center` | `messaging-spaces` (that's collaboration spaces) |
|
|
184
|
+
| "Set up recording" (per-user call recording) | `manage-call-settings` | `customer-assist` (that's CC queue recording) |
|
|
185
|
+
| "Set up recording" (CC queue recording) | `customer-assist` | `manage-call-settings` (that's per-user Calling recording) |
|
|
186
|
+
| "Download/export recordings" (converged recordings) | `reporting` | `manage-call-settings` (that's the per-user toggle, not retrieval) |
|
|
187
|
+
| "Configure the site" (Calling location) | `provision-calling` | `contact-center` (CC sites are logical agent groupings, not locations) |
|
|
188
|
+
| "Configure the site" (CC site for agent teams) | `contact-center` | `provision-calling` (Calling locations have addresses and PSTN) |
|
|
189
|
+
| "Create a workspace" (Calling device workspace) | `manage-devices` | `contact-center` (CC JDS workspaces are journey data containers) |
|
|
190
|
+
| "Set up business hours / holidays" (Calling schedule) | `configure-features` | `contact-center` (CC business hours are a separate entity type) |
|
|
191
|
+
| "Set up business hours / holidays" (CC schedule) | `contact-center` | `configure-features` (Calling schedules attach to AA/CQ/HG) |
|
|
192
|
+
| **Undocumented capabilities — user asks, table must route:** | | |
|
|
193
|
+
| Set up executive-assistant delegation | `manage-call-settings` | `configure-features` (delegation is a person setting, not a call feature) |
|
|
194
|
+
| Configure line keys, BLF, speed dials on phones | `manage-devices` | `manage-call-settings` (line key templates are device config, not call settings) |
|
|
195
|
+
| Digit manipulation (strip digits, add country code) | `configure-routing` (translation patterns) | `manage-call-settings` (that's per-person settings, not digit transforms) |
|
|
196
|
+
| Bulk import users from CSV | `provision-calling` | `manage-identity` (SCIM is directory sync, not bulk user provisioning) |
|
|
197
|
+
| How many licenses are unused / license audit | `manage-licensing` | `reporting` (reporting is CDR/call data, not license inventory) |
|
|
198
|
+
| Verify domain for SCIM / DNS setup | `manage-identity` | `provision-calling` (domain verification is identity, not calling provisioning) |
|
|
199
|
+
| Enable hoteling on a workspace | `manage-call-settings` | `manage-devices` (hoteling is a workspace calling setting, not device provisioning) |
|
|
200
|
+
| Import org contacts / directory entries | `manage-identity` | `provision-calling` (org contacts are directory, not calling users) |
|
|
201
|
+
| Reclaim licenses from inactive users | `manage-licensing` | `teardown` (license reclamation ≠ resource deletion) |
|
|
202
|
+
| Manage announcement repository files/playlists (AA/CQ greetings), or generate text-to-speech prompts | `configure-features` (groups: `announcements` — incl. `tts-generate`/`tts-usage`/`tts-status`/`tts-voices`; `announcement-playlists`, `cq-playlists`) | `reporting` (that's recordings, not announcements) |
|
|
203
|
+
| Configure E911 emergency services/addresses (`emergency-services` group) | `provision-calling` (location addresses) + `manage-call-settings` (per-person ECBN) | `wxc-calling-debug` |
|
|
204
|
+
| Virtual line call settings (`virtual-line-settings`) | `manage-call-settings` (virtual lines are person-like settings; see `virtual-lines.md`) | `provision-calling` |
|
|
205
|
+
| Operating modes / mode management (`mode-management`, user-token only per Known Issue #3) | `manage-call-settings` | `configure-features` (`operating-modes` location/feature side stays there) |
|
|
206
|
+
| Org/admin recordings retrieval (`admin-recordings`) | `reporting` | `manage-meetings` |
|
|
207
|
+
| Org profile, settings, roles (`identity-org`, `org-settings`, `roles`) | `manage-identity` | `audit-compliance` |
|
|
208
|
+
| Person-level hot-desking members (`hot-desking-members`) | `manage-call-settings` (person settings) | `manage-devices` (workspace/device-level hot-desk stays there) |
|
|
209
|
+
|
|
210
|
+
### Multi-Skill Workflows
|
|
211
|
+
|
|
212
|
+
Common admin goals that span multiple skills. When the user states one of these end goals, orchestrate the skills in sequence — don't pick just one.
|
|
213
|
+
|
|
214
|
+
| User goal | Skills needed (in order) | Why it's multi-skill |
|
|
215
|
+
|-----------|------------------------|---------------------|
|
|
216
|
+
| Offboard a user | `manage-call-settings` → `manage-devices` → `manage-licensing` → `teardown` → `manage-identity` | Must remove settings, release device, reclaim license, delete user, sync directory |
|
|
217
|
+
| Set up call recording for a team | `manage-call-settings` (per-person toggle) + `configure-features` (location recording policy) + `customer-assist` (if CX queue recording) | Recording config lives at person, location, AND queue level |
|
|
218
|
+
| E911 compliance for a location | `provision-calling` (emergency address on location) + `manage-call-settings` (per-person ECBN) | Address is location-level, ECBN callback number is per-person |
|
|
219
|
+
| Shared line on physical phones | `manage-call-settings` (shared line appearance / exec-assistant) + `manage-devices` (line key assignment on devices) | Pairing is a call setting, line key layout is device config |
|
|
220
|
+
| Port numbers and assign to users | `provision-calling` (location number inventory) → `manage-call-settings` (assign to users) → `configure-routing` (update dial plan if needed) | Numbers flow through location inventory before user assignment |
|
|
221
|
+
| Convert workspace to licensed user | `teardown` (decommission workspace) → `provision-calling` (create user, assign license) → `manage-call-settings` (voicemail, forwarding) → `manage-devices` (reassign device) | Workspace-to-user is a lifecycle change spanning 4 domains |
|
|
222
|
+
| CC overflow to Calling hunt group | `contact-center` (CC queue/entry point config) + `configure-features` (hunt group) + `configure-routing` (dial plan to connect them) | CC and Calling are separate routing worlds joined by PSTN/dial plan |
|
|
223
|
+
| Hot desking on conference phones | `manage-devices` (enable hot desking; workspace/device level) + `device-platform` (PhoneOS config keys for hot desk behavior) + `manage-call-settings` (workspace hoteling settings AND person-level hot-desking members via `hot-desking-members`) | Device provisioning, firmware config, and calling settings are three layers; person-level members are person settings |
|
|
224
|
+
|
|
225
|
+
### Reference Docs — Webex API Surface
|
|
226
|
+
|
|
227
|
+
| Path | Purpose |
|
|
228
|
+
|------|---------|
|
|
229
|
+
| `docs/reference/authentication.md` | Auth methods, tokens, scopes, OAuth flows |
|
|
230
|
+
| `docs/reference/provisioning.md` | People (profile fields, phoneNumbers array incl. alternate1/alternate2), licenses, locations, org setup |
|
|
231
|
+
| `docs/reference/call-features-major.md` | Auto attendants, call queues, hunt groups |
|
|
232
|
+
| `docs/reference/call-features-additional.md` | Paging, call park, pickup, voicemail groups, Customer Assist |
|
|
233
|
+
| `docs/reference/person-call-settings-handling.md` | Call forwarding, DND, call waiting, sim/sequential ring |
|
|
234
|
+
| `docs/reference/person-call-settings-media.md` | Voicemail, caller ID, privacy, barge, recording, intercept |
|
|
235
|
+
| `docs/reference/person-call-settings-permissions.md` | Incoming/outgoing permissions, feature access, executive/assistant |
|
|
236
|
+
| `docs/reference/person-call-settings-behavior.md` | Calling behavior, app services, hoteling, receptionist, phone number add/remove/reassign, ECBN |
|
|
237
|
+
| `docs/reference/self-service-call-settings.md` | User self-service call settings (/people/me/ endpoints) |
|
|
238
|
+
| `docs/reference/location-calling-core.md` | Location enablement, internal dialing, voicemail policies, voice portal |
|
|
239
|
+
| `docs/reference/location-calling-media.md` | Announcements, playlists, schedules, access codes |
|
|
240
|
+
| `docs/reference/location-recording-advanced.md` | Call recording, caller reputation, conference, supervisor, operating modes |
|
|
241
|
+
| `docs/reference/call-routing.md` | Dial plans, trunks, route groups, route lists, translation patterns, PSTN |
|
|
242
|
+
| `docs/reference/devices-core.md` | Device CRUD, activation, device configurations, telephony devices |
|
|
243
|
+
| `docs/reference/devices-dect.md` | DECT networks, base stations, handsets, hotdesking |
|
|
244
|
+
| `docs/reference/devices-workspaces.md` | Workspaces, workspace settings, workspace locations |
|
|
245
|
+
| `docs/reference/devices-platform.md` | RoomOS device configurations, workspace personalization, xAPI |
|
|
246
|
+
| `docs/reference/call-control.md` | Real-time call control (dial, answer, hold, transfer, park, recording) |
|
|
247
|
+
| `docs/reference/webhooks-events.md` | Webhooks: CRUD, telephony + messaging event types, payloads |
|
|
248
|
+
| `docs/reference/reporting-analytics.md` | CDR, report templates, call quality, queue/AA stats |
|
|
249
|
+
| `docs/reference/virtual-lines.md` | Virtual line/extension settings, voicemail, recording |
|
|
250
|
+
| `docs/reference/emergency-services.md` | E911, emergency addresses, ECBN |
|
|
251
|
+
|
|
252
|
+
### Reference Docs — XSI Real-Time (wxcadm)
|
|
253
|
+
|
|
254
|
+
| Path | Purpose |
|
|
255
|
+
|------|---------|
|
|
256
|
+
| `docs/reference/wxcadm-xsi-realtime.md` | XSI events, real-time call monitoring (used by call-control skill) |
|
|
257
|
+
|
|
258
|
+
Historical SDK object-model docs (wxcadm core/person/locations/features/devices-workspaces/routing/advanced, wxc-sdk-patterns) live in `docs/reference/archive/` — they document Python SDKs this repo does not execute. Resurrect deliberately if a future skill needs RedSky-portal/Meraki/CP-API facts.
|
|
259
|
+
|
|
260
|
+
### Reference Docs — Admin & Identity APIs
|
|
261
|
+
|
|
262
|
+
| Path | Purpose |
|
|
263
|
+
|------|---------|
|
|
264
|
+
| `docs/reference/admin-org-management.md` | Organizations, org settings, contacts, roles, domains |
|
|
265
|
+
| `docs/reference/admin-identity-scim.md` | SCIM users/groups, schemas, bulk ops, identity org, people, groups |
|
|
266
|
+
| `docs/reference/admin-licensing.md` | License inventory, assignment, usage auditing |
|
|
267
|
+
| `docs/reference/admin-audit-security.md` | Admin audit events, security audit, compliance events |
|
|
268
|
+
| `docs/reference/admin-hybrid.md` | Hybrid clusters/connectors, analytics, meeting quality |
|
|
269
|
+
| `docs/reference/admin-partner.md` | Partner admins, tags, partner reports |
|
|
270
|
+
| `docs/reference/admin-apps-data.md` | Service apps, authorizations, activation emails, data sources, recordings, resource groups |
|
|
271
|
+
|
|
272
|
+
### Reference Docs — Messaging APIs
|
|
273
|
+
|
|
274
|
+
| Path | Purpose |
|
|
275
|
+
|------|---------|
|
|
276
|
+
| `docs/reference/messaging-spaces.md` | Spaces, messages, memberships, teams, ECM, HDS |
|
|
277
|
+
| `docs/reference/messaging-bots.md` | Bot development, adaptive cards, room tabs, cross-domain recipes |
|
|
278
|
+
|
|
279
|
+
### Reference Docs — Meetings APIs
|
|
280
|
+
|
|
281
|
+
| Path | Purpose |
|
|
282
|
+
|------|---------|
|
|
283
|
+
| `docs/reference/meetings-core.md` | Meeting CRUD, templates, controls, registrants, interpreters, breakouts, surveys |
|
|
284
|
+
| `docs/reference/meetings-content.md` | Transcripts, captions, chats, summaries, meeting messages |
|
|
285
|
+
| `docs/reference/meetings-settings.md` | Preferences, session types, tracking codes, site settings, polls, Q&A, reports |
|
|
286
|
+
| `docs/reference/meetings-infrastructure.md` | Video Mesh (clusters, nodes, health, utilization), participants, invitees |
|
|
287
|
+
|
|
288
|
+
### Reference Docs — Contact Center APIs
|
|
289
|
+
|
|
290
|
+
| Path | Purpose |
|
|
291
|
+
|------|---------|
|
|
292
|
+
| `docs/reference/contact-center-core.md` | CC agents, queues, entry points, teams, skills, desktop, configuration |
|
|
293
|
+
| `docs/reference/contact-center-routing.md` | CC dial plans, dial number-to-entry-point mapping, campaigns, flows, audio, contacts, outdial |
|
|
294
|
+
| `docs/reference/contact-center-analytics.md` | CC AI, monitoring, subscriptions, tasks, search |
|
|
295
|
+
| `docs/reference/contact-center-journey.md` | JDS: workspaces, persons, identity, profile views, events, WXCC subscription |
|
|
296
|
+
|
|
297
|
+
### Migration (KB, Runbooks, Tool)
|
|
298
|
+
|
|
299
|
+
Detailed migration context lives in `.claude/rules/cucm-migration.md` (auto-loaded when touching migration paths). Contains: knowledge base file map (8 KB docs for the Opus advisor), operator runbooks (3 docs for pipeline walkthrough, decision guide, tuning), migration tool pipeline commands, advisory workflow, report/diff/notice generation commands, and the phase-by-phase agent invocation example.
|
|
300
|
+
|
|
301
|
+
**Read the rule when:** handling any CUCM migration question, running `/cucm-migrate`, or working with the migration advisor agent — even if not editing migration source files directly.
|
|
302
|
+
|
|
303
|
+
### CLI (wxcli) — Primary Execution Layer
|
|
304
|
+
|
|
305
|
+
| Path | Purpose |
|
|
306
|
+
|------|---------|
|
|
307
|
+
| `wxcli --help` | Shows all command groups |
|
|
308
|
+
| `wxcli <group> --help` | Shows commands within a group |
|
|
309
|
+
| `wxcli <group> <command> --help` | Shows options for a command |
|
|
310
|
+
|
|
311
|
+
### Org Health Assessment
|
|
312
|
+
|
|
313
|
+
Detailed context in `.claude/rules/org-health.md` (auto-loaded when touching org health paths). Contains: file map (models, collector, checks, analyze, report), run instructions, and check category breakdown (Security Posture, Routing Hygiene, Feature Utilization, Device Health).
|
|
314
|
+
|
|
315
|
+
**Read the rule when:** running an org health audit, modifying checks, or working on the report generator.
|
|
316
|
+
|
|
317
|
+
### CUCM→Webex Migration Tool
|
|
318
|
+
|
|
319
|
+
The migration tool is wired into the CLI as `wxcli cucm <command>`. Pipeline workflow, report generation, and advisory details are in `.claude/rules/cucm-migration.md`.
|
|
320
|
+
|
|
321
|
+
## CLI Status & Known Issues
|
|
322
|
+
|
|
323
|
+
**178 command groups covering calling, admin, device, messaging, meetings, wholesale, and contact center APIs.** The `converged-recordings` group combines generated CRUD commands with hand-written `download` and `export` commands.
|
|
324
|
+
|
|
325
|
+
### Partner Multi-Org Support
|
|
326
|
+
|
|
327
|
+
wxcli supports partner/VAR/MSP admins who manage multiple customer orgs with a single partner token.
|
|
328
|
+
|
|
329
|
+
- **`wxcli configure`** — detects multi-org tokens automatically and prompts for org selection. The selected `orgId` is saved to the config file.
|
|
330
|
+
- **`wxcli switch-org`** — change the active target org at any time.
|
|
331
|
+
- **`wxcli clear-org`** — remove the saved `orgId` to revert to single-org behavior.
|
|
332
|
+
- **`wxcli whoami`** — shows a "Target:" line when an org is set.
|
|
333
|
+
- **Most generated commands** auto-inject `orgId` from config on endpoints that accept it (generator `auto_inject_from_config`). No flag is required — the parameter is injected transparently.
|
|
334
|
+
- The former hand-coded trio (licenses, locations, numbers) is retired — all three are generated modules now with the same orgId injection. `users` is an alias for the generated `people` group; `licenses-api` is a deprecated one-release alias for `licenses` (renamed 2026-07-02).
|
|
335
|
+
- The builder agent has a blocking org confirmation step at session start (section 2b) when a partner token is detected.
|
|
336
|
+
|
|
337
|
+
See `docs/reference/authentication.md` (Partner/Multi-Org Tokens section) for full details.
|
|
338
|
+
|
|
339
|
+
### Error → Known Issue Quick Reference
|
|
340
|
+
|
|
341
|
+
When you hit one of these errors, jump to the matching known issue:
|
|
342
|
+
|
|
343
|
+
| Error | Symptom | Known Issue |
|
|
344
|
+
|-------|---------|-------------|
|
|
345
|
+
| 400 "Target user not authorized" | `call-controls` with admin token | #1 — needs user-level OAuth |
|
|
346
|
+
| 404 (error 4008) | `my-call-settings` or `mode-management` | #3 — user needs Calling license |
|
|
347
|
+
| 404 on person settings | Admin token on user-only endpoints | #4 — 19 settings have no admin path |
|
|
348
|
+
| 405 on workspace settings | Workspace `/telephony/config/` endpoint | #6 — needs Professional license |
|
|
349
|
+
| 403 on `cc-*` commands | PAT or wrong OAuth scopes | #11 — needs `cjp:config_*` OAuth scopes |
|
|
350
|
+
| 409 on location delete | Resources still assigned | See `.claude/rules/cleanup.md` |
|
|
351
|
+
| Unexpected command name | `show-*` vs `list-*`, singular vs plural | #5 — two path families; always run `--help` first |
|
|
352
|
+
| `--json-body` needed | Complex nested fields in request body | #2 — check `--help` for JSON example |
|
|
353
|
+
|
|
354
|
+
### Known issues
|
|
355
|
+
|
|
356
|
+
1. **call-controls requires user-level OAuth.** Admin tokens get 400 "Target user not authorized". The CLI now detects this error and prints a tip about needing user-level OAuth.
|
|
357
|
+
2. **Complex nested settings need `--json-body`.** The generator skips deeply nested object/array body fields. Commands with nested fields now show an example JSON snippet in `--help` output (e.g., `wxcli user-settings update-call-forwarding --help`).
|
|
358
|
+
3. **my-call-settings and mode-management require calling-licensed user.** All `/people/me/*` endpoints return 404 (error 4008) if the authenticated user doesn't have a Webex Calling license. The `my-call-settings` group (120 commands) covers base + UserHub Phase 2/3/4 self-service endpoints. The CLI detects this error and prints a tip.
|
|
359
|
+
4. **19 person settings are user-only (no admin path).** Admin tokens get 404. Use `wxcli my-call-settings` with user-level OAuth. Includes core settings (`callBlock`, `callCaptions`, `anonymousCallReject`, `callNotify`, `preferredAnswerEndpoint`, `guestCalling`, `modeManagement`) plus informational/read-only endpoints (`availableCallerIds`, `queues`, `services`, etc.). See `docs/reference/self-service-call-settings.md` gotchas.
|
|
360
|
+
5. **Two path families for person settings.** Classic `/people/{id}/features/` vs newer `/telephony/config/people/{id}/`. Some names differ. See `docs/reference/person-call-settings-behavior.md` (lines 36-54) for the full mapping table.
|
|
361
|
+
6. **Workspace `/telephony/config/` settings require Professional license.** Basic workspaces get 405. See `docs/reference/devices-workspaces.md` gotcha #10 for the endpoint-by-license matrix.
|
|
362
|
+
7. **Customer Assist queues require `--has-cx-essentials true` on `call-queue` commands.** Use `wxcli customer-assist` (alias `cx-essentials`) as the primary CLI group for CX queue management. Standard `call-queue list` omits CX queues unless the flag is passed. See `docs/reference/call-features-additional.md` cross-cutting gotchas.
|
|
363
|
+
8. **Supervisor delete returns 204 but supervisor persists.** Workaround: `update-supervisors` with `action: DELETE` on each agent. See `docs/reference/call-features-additional.md` gotchas.
|
|
364
|
+
9. **`virtual-extensions` commands use wrong ID type.** Uses `VIRTUAL_EXTENSION`-encoded IDs but virtual lines use `VIRTUAL_LINE` IDs. Still separate path families in the spec (`virtualExtensions/{extensionId}` vs `virtualLines/{virtualLineId}`). `wxcli cleanup` uses raw REST as a workaround. See `docs/reference/virtual-lines.md` Raw HTTP Gotchas #9.
|
|
365
|
+
10. **Device config schema is firmware-dependent.** Per-line ringtone was absent on PhoneOS 3.5/3.6 but fixed in 4.1. Offline/expired devices retain a stale schema. See `docs/reference/devices-platform.md` gotchas #10-11.
|
|
366
|
+
11. **Contact Center (`cc-*`) commands require CC-scoped OAuth and region config.** PATs do NOT carry `cjp:config` scopes — even full admins on CC orgs get 403. Use an OAuth integration with `cjp:config_read`/`cjp:config_write` explicitly selected, then re-run the OAuth flow. The CC API also requires the bare UUID org ID (not the base64 Spark ID); `get_cc_org_id()` in `config.py` handles decoding. See `docs/reference/contact-center-core.md` gotchas #14 and #18-22.
|
|
367
|
+
|
|
368
|
+
### Cleanup Command
|
|
369
|
+
|
|
370
|
+
Detailed context in `.claude/rules/cleanup.md` (auto-loaded when touching `cleanup.py`). Contains: all flags, 13-layer deletion order, and known behaviors (virtual line workaround, location disable propagation, workspace ordering).
|
|
371
|
+
|
|
372
|
+
**Read the rule when:** running `wxcli cleanup`, modifying cleanup logic, or debugging deletion failures.
|
|
373
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# docs/reference — Webex API Reference Docs
|
|
2
|
+
|
|
3
|
+
48 reference docs originally built from wxc_sdk (v1.30.0), wxcadm (v4.6.1), and 7 OpenAPI 3.0 specs. Each doc covers wxcli CLI examples and raw HTTP fallback; calling/admin/device docs also include SDK method signatures. These docs serve the CLI, the playbook agent, and the CUCM migration tool's mapper/executor designs.
|
|
4
|
+
|
|
5
|
+
## Doc Families
|
|
6
|
+
|
|
7
|
+
- **Person call settings** (5): `person-call-settings-{handling,media,permissions,behavior}.md`, `self-service-call-settings.md`
|
|
8
|
+
- **Location calling** (3): `location-calling-core.md`, `location-calling-media.md`, `location-recording-advanced.md`
|
|
9
|
+
- **Devices** (4): `devices-{core,dect,workspaces,platform}.md`
|
|
10
|
+
- **wxcadm** (1): `wxcadm-xsi-realtime.md` (XSI streaming has no wxcli path; used by call-control). The other 7 wxcadm docs + `wxc-sdk-patterns.md` are archived in `archive/` — historical Python SDK object-model docs this repo does not execute.
|
|
11
|
+
- **Admin** (7): `admin-{org-management,identity-scim,licensing,audit-security,hybrid,partner,apps-data}.md`
|
|
12
|
+
- **Meetings** (4): `meetings-{core,content,settings,infrastructure}.md`
|
|
13
|
+
- **Messaging** (2): `messaging-{spaces,bots}.md`
|
|
14
|
+
- **Contact Center** (4): `contact-center-{core,routing,analytics,journey}.md`
|
|
15
|
+
- **Standalone** (10): `authentication.md`, `provisioning.md`, `call-features-major.md`, `call-features-additional.md`, `call-routing.md`, `call-control.md`, `webhooks-events.md`, `reporting-analytics.md`, `virtual-lines.md`, `emergency-services.md`
|
|
16
|
+
|
|
17
|
+
## Consumers
|
|
18
|
+
|
|
19
|
+
- **Mapper design** (pipeline doc 03b) — field-level CUCM-to-Webex mappings
|
|
20
|
+
- **Executor design** (pipeline doc 05b) — API call sequences and error handling
|
|
21
|
+
- **Build sessions** — implementation reference for CLI and agent work
|
|
22
|
+
|
|
23
|
+
## Maintenance
|
|
24
|
+
|
|
25
|
+
Update these docs when you discover new gotchas, API behavior changes, or scope/permission corrections. See the Sync Protocol in the project root `CLAUDE.md` for the full workflow.
|