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,790 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manage-devices
|
|
3
|
+
description: |
|
|
4
|
+
Manage Webex Calling devices using wxcli CLI commands: phones (MPP, ATA, room devices),
|
|
5
|
+
DECT networks, workspaces, activation codes, device settings, line key templates (BLF,
|
|
6
|
+
speed dials, line key layout), hot desking members, and device tags.
|
|
7
|
+
Guides the user from prerequisites through provisioning, activation, configuration, deletion, and verification.
|
|
8
|
+
Use for: create, provision, activate, configure, delete, remove, decommission, or list devices and workspaces.
|
|
9
|
+
NOT for: PhoneOS/RoomOS config keys or xAPI commands (use device-platform skill).
|
|
10
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
11
|
+
argument-hint: [device-operation]
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Manage Devices Workflow
|
|
15
|
+
|
|
16
|
+
**Checkpoint — do NOT proceed until you can answer these:**
|
|
17
|
+
1. What is the correct order for DECT provisioning? (Answer: Create DECT network → add base stations (real Cisco MACs required) → add handsets with line assignments.)
|
|
18
|
+
2. How do you generate an activation code for a device? (Answer: Use `wxcli devices create-activation-code` — the device must exist first via `wxcli devices create`.)
|
|
19
|
+
|
|
20
|
+
If you cannot answer both, you skipped reading this skill. Go back and read it.
|
|
21
|
+
|
|
22
|
+
## Step 1: Load references and verify commands
|
|
23
|
+
|
|
24
|
+
1. Read `docs/reference/devices-core.md` for device CRUD, activation codes, MAC provisioning, line key templates, device settings
|
|
25
|
+
2. Read `docs/reference/devices-dect.md` for DECT networks, base stations, handsets, hot desking
|
|
26
|
+
3. Read `docs/reference/devices-workspaces.md` for workspace creation, workspace device assignment, workspace call settings
|
|
27
|
+
|
|
28
|
+
**Mandatory --help verification:** Before constructing any wxcli command, run `wxcli <group> --help` to verify the subcommand exists, then `wxcli <group> <subcommand> --help` to verify the exact flags. Do NOT rely on examples in this skill or reference docs — the CLI is auto-generated and flag names may differ from what documentation suggests. Common traps:
|
|
29
|
+
- `validate-a-list` has NO `--macs` flag and NO `--output` flag — use `--json-body '{"macs":["..."]}'` (always outputs JSON)
|
|
30
|
+
- `create-base-stations` has NO `--base-station-macs` flag — use `--json-body '{"baseStationMacs":["..."]}'`
|
|
31
|
+
- Person-level hoteling is `wxcli device-settings update-hoteling` — NOT `wxcli user-call-settings` (that group does not exist in the CLI; the registered group is `user-settings`)
|
|
32
|
+
- Hoteling read/write split: UPDATE is `device-settings update-hoteling`, but READ/VERIFY is `user-settings show-hoteling` — different groups! There is no `show-hoteling` in `device-settings`.
|
|
33
|
+
- LKT delete is `wxcli device-settings delete TEMPLATE_ID` — NOT `delete-line-key-templates` (that command doesn't exist)
|
|
34
|
+
- `create-apply-line-key-template` has named flags `--action` and `--template-id` — prefer these over `--json-body` for simple applies
|
|
35
|
+
|
|
36
|
+
## Step 2: Verify auth token
|
|
37
|
+
|
|
38
|
+
Before any API calls, confirm the user has a working auth token:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
wxcli whoami
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If this fails, stop and resolve authentication first (`wxcli configure`). Required scopes vary by operation:
|
|
45
|
+
|
|
46
|
+
| Operation | Read Scope | Write Scope |
|
|
47
|
+
|-----------|-----------|-------------|
|
|
48
|
+
| Cloud device CRUD, tags | `spark-admin:devices_read` | `spark-admin:devices_write` |
|
|
49
|
+
| Activation codes | `spark-admin:devices_read` | `spark-admin:devices_write` + `identity:one_time_password` |
|
|
50
|
+
| Telephony device config (members, settings, line keys, layout) | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
51
|
+
| Workspaces | `spark-admin:workspaces_read` | `spark-admin:workspaces_write` |
|
|
52
|
+
| DECT networks, base stations, handsets | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
53
|
+
|
|
54
|
+
## Step 3: Identify which device operation to perform
|
|
55
|
+
|
|
56
|
+
Ask the user what they want to do. Present this decision matrix if they are unsure:
|
|
57
|
+
|
|
58
|
+
| Need | Operation | CLI Group |
|
|
59
|
+
|------|-----------|-----------|
|
|
60
|
+
| Add a Cisco MPP phone or ATA by MAC address | **Create device by MAC** | `wxcli devices` |
|
|
61
|
+
| Generate a code for a phone to self-register | **Activation code** | `wxcli devices` |
|
|
62
|
+
| View/manage devices in the org | **List/show/delete devices** | `wxcli devices` |
|
|
63
|
+
| Assign lines, shared lines, or members to a phone | **Device members** | `wxcli device-settings` |
|
|
64
|
+
| Configure line keys, speed dials, BLF monitoring | **Line key templates / layout** | `wxcli device-settings` |
|
|
65
|
+
| Change phone display, ringtone, or device-level settings | **Device settings** | `wxcli device-settings` |
|
|
66
|
+
| Set up a wireless DECT phone system | **DECT network** | `wxcli dect-devices` |
|
|
67
|
+
| Create a conference room or lobby phone workspace | **Workspace** | `wxcli workspaces` |
|
|
68
|
+
| Allow users to temporarily use a shared phone | **Hot desking** | `wxcli hot-desk` / `wxcli hot-desking-portal` |
|
|
69
|
+
| Validate MAC addresses before provisioning | **MAC validation** | `wxcli device-settings` |
|
|
70
|
+
|
|
71
|
+
**Not a hardware operation?** For RoomOS software configuration, workspace personalization, or xAPI commands (dial, volume, standby, room analytics), use the `device-platform` skill instead.
|
|
72
|
+
|
|
73
|
+
## Step 4: Prerequisites
|
|
74
|
+
|
|
75
|
+
Before any device operation, verify these exist and gather operation-specific requirements.
|
|
76
|
+
|
|
77
|
+
### 4a. Location exists
|
|
78
|
+
|
|
79
|
+
All devices and workspaces are location-scoped. Confirm the target location:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
wxcli locations list --output json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Capture the `location_id` for the target location.
|
|
86
|
+
|
|
87
|
+
### 4b. Check device configuration mode (for settings operations)
|
|
88
|
+
|
|
89
|
+
**If the user's request involves reading or changing device settings** (not just CRUD, line assignment, or activation), determine which API surface the target device uses:
|
|
90
|
+
|
|
91
|
+
1. Look up the device:
|
|
92
|
+
```bash
|
|
93
|
+
wxcli devices list --mac MAC_ADDRESS --output json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
2. Check the `product` field in the response. **Route based on model family and operation type:**
|
|
97
|
+
- **9800-series** (product contains "9811", "9821", "9841", "9851", "9861", or "9871"):
|
|
98
|
+
- **Device-level settings** (`show-settings-devices`, `update-settings-devices`): These 404 on 9800-series. **Redirect to the `device-platform` skill** for PhoneOS config keys (ringtone, standby, display, wallpaper, line labels, etc.). NOTE: 9800-series runs PhoneOS, NOT RoomOS. PhoneOS is RoomOS-derived but distinct — do not call these "RoomOS keys" or call 9800 devices "RoomOS devices".
|
|
99
|
+
- **Line Key Templates** (create, list, show, update, delete, apply): **Stay in this skill.** Works with model `"Cisco 98xx"`.
|
|
100
|
+
- **Device member management** (list members, update members/ports): **Stay in this skill.** Works normally.
|
|
101
|
+
- **Person-level device settings** (`show-settings-devices-3`): **Stay in this skill.** Works (limited fields).
|
|
102
|
+
- **Room, Board, Desk series**: Redirect to `device-platform` skill for all configuration.
|
|
103
|
+
- **MPP 68xx, 78xx, 88xx, ATA**: Continue with `device-settings` commands in this skill.
|
|
104
|
+
|
|
105
|
+
**Why this matters:** The 9800-series phones are `productType: phone` but run PhoneOS (RoomOS-derived). Only device-level settings endpoints (`show-settings-devices`, `update-settings-devices`) fail on 9800-series with 404. Line key templates, member management, and person-level settings work fine through the telephony config API. Do not blanket-redirect all 9800-series operations — route by operation type.
|
|
106
|
+
|
|
107
|
+
See `docs/reference/devices-core.md` Section 5a (Device Settings API Router) for the full routing table.
|
|
108
|
+
|
|
109
|
+
### 4c. User or workspace exists (for device assignment)
|
|
110
|
+
|
|
111
|
+
Devices must be assigned to a person or workspace:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# List calling-enabled users
|
|
115
|
+
wxcli users list --calling-data true --output json
|
|
116
|
+
|
|
117
|
+
# List workspaces
|
|
118
|
+
wxcli workspaces list --output json
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 4d. Phone numbers/extensions available
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
wxcli numbers list --location-id LOCATION_ID --output json
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 4e. MPP/ATA phone prerequisites
|
|
128
|
+
|
|
129
|
+
| Requirement | Details |
|
|
130
|
+
|-------------|---------|
|
|
131
|
+
| Valid MAC address | 12 hex characters (e.g., `AABBCCDDEEFF`). Validate with `wxcli device-settings validate-a-list --macs AABBCCDDEEFF` |
|
|
132
|
+
| Target person/workspace | Must exist before device creation |
|
|
133
|
+
| Device model | Must be in supported catalog |
|
|
134
|
+
| SIP password | Only for 3rd-party (non-Cisco) devices |
|
|
135
|
+
|
|
136
|
+
### 4f. Activation code prerequisites
|
|
137
|
+
|
|
138
|
+
| Requirement | Details |
|
|
139
|
+
|-------------|---------|
|
|
140
|
+
| Target person/workspace | Must exist |
|
|
141
|
+
| Model parameter | Required for phones; optional for RoomOS collaboration devices |
|
|
142
|
+
|
|
143
|
+
### 4g. DECT prerequisites
|
|
144
|
+
|
|
145
|
+
| Requirement | Details |
|
|
146
|
+
|-------------|---------|
|
|
147
|
+
| Location | Must exist |
|
|
148
|
+
| Base station MAC addresses | Physical hardware MAC required |
|
|
149
|
+
| Dependency chain | Network --> Base Station(s) --> Handset(s). Cannot skip steps |
|
|
150
|
+
|
|
151
|
+
### 4h. Workspace device prerequisites
|
|
152
|
+
|
|
153
|
+
| Requirement | Details |
|
|
154
|
+
|-------------|---------|
|
|
155
|
+
| Workspace | Must be created first with Webex Calling enabled and a location assigned |
|
|
156
|
+
| `location_id` and `supported_devices` | Immutable after creation -- set correctly on creation |
|
|
157
|
+
| Hot-desk-only workspaces | Cannot have `phoneNumber`, `extension`, `calendar`, or `deviceHostedMeetings` set |
|
|
158
|
+
|
|
159
|
+
### 4i. Device settings prerequisites
|
|
160
|
+
|
|
161
|
+
| Requirement | Details |
|
|
162
|
+
|-------------|---------|
|
|
163
|
+
| Line key template | Device model must match. Template applies org-wide or by location/tag filter |
|
|
164
|
+
| Device settings GET/PUT | `deviceModel` parameter is required |
|
|
165
|
+
|
|
166
|
+
### 4j. Hot desking prerequisites
|
|
167
|
+
|
|
168
|
+
| Requirement | Details |
|
|
169
|
+
|-------------|---------|
|
|
170
|
+
| Workspace side | `hotdeskingStatus` must be `on` |
|
|
171
|
+
| Person side | Hoteling must be enabled on person's profile via `wxcli device-settings update-hoteling` |
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Step 5: Build and present deployment plan -- [SHOW BEFORE EXECUTING]
|
|
176
|
+
|
|
177
|
+
Before executing any commands, present the full plan to the user:
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
DEPLOYMENT PLAN
|
|
181
|
+
===============
|
|
182
|
+
Operation: [device operation type]
|
|
183
|
+
Location: [name] ([location_id])
|
|
184
|
+
Target: [person/workspace name] ([id])
|
|
185
|
+
|
|
186
|
+
Device Details:
|
|
187
|
+
Type: [MPP phone / ATA / DECT / Room device]
|
|
188
|
+
Model: [model name]
|
|
189
|
+
MAC: [mac_address or "Activation code"]
|
|
190
|
+
Assignment: [person / workspace]
|
|
191
|
+
|
|
192
|
+
Configuration:
|
|
193
|
+
[Operation-specific settings listed here]
|
|
194
|
+
|
|
195
|
+
Prerequisites verified:
|
|
196
|
+
[check] Location exists
|
|
197
|
+
[check] Person/workspace exists
|
|
198
|
+
[check] MAC address validated (if applicable)
|
|
199
|
+
[check] [Operation-specific prereqs]
|
|
200
|
+
|
|
201
|
+
Commands to execute:
|
|
202
|
+
wxcli [group] [command] ...
|
|
203
|
+
wxcli device-settings apply-changes-for DEVICE_ID (if settings changed)
|
|
204
|
+
|
|
205
|
+
Proceed? (yes/no)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Wait for user confirmation before executing.**
|
|
209
|
+
|
|
210
|
+
## Step 6: Execute via wxcli
|
|
211
|
+
|
|
212
|
+
Run the commands in order. For multi-step operations (e.g., workspace + device + settings), execute sequentially.
|
|
213
|
+
|
|
214
|
+
Handle errors explicitly:
|
|
215
|
+
- **401/403**: Token expired or insufficient scopes -- run `wxcli configure` to re-authenticate
|
|
216
|
+
- **400 "MAC address unavailable"**: MAC already registered to another device -- check with `wxcli device-settings validate-a-list`
|
|
217
|
+
- **400 "Model not supported"**: Use `wxcli device-settings list-supported-devices-dect-networks` or check supported catalog
|
|
218
|
+
- **409**: Name or resource conflict -- ask user for alternate
|
|
219
|
+
|
|
220
|
+
**Always call `apply-changes-for` after updating device settings, members, or layout** to push configuration to the physical device.
|
|
221
|
+
|
|
222
|
+
### 6a. Device lifecycle -- Create, Activate, Configure, Manage
|
|
223
|
+
|
|
224
|
+
**List and discover devices:**
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# List all devices in the org
|
|
228
|
+
wxcli devices list --output json
|
|
229
|
+
|
|
230
|
+
# Show details for a specific device
|
|
231
|
+
wxcli devices show DEVICE_ID --output json
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Create a device by MAC address:**
|
|
235
|
+
|
|
236
|
+
Collect from user:
|
|
237
|
+
|
|
238
|
+
| Parameter | Required | Notes |
|
|
239
|
+
|-----------|:--------:|-------|
|
|
240
|
+
| MAC address | Yes | 12 hex characters (e.g., `AABBCCDDEEFF`) |
|
|
241
|
+
| Person ID or Workspace ID | Yes | Who/what the device is assigned to |
|
|
242
|
+
| Model | Yes | Must be from the supported devices catalog |
|
|
243
|
+
| Password | Only for 3rd-party | SIP password for non-Cisco devices |
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Validate MAC first (no --macs flag; use --json-body)
|
|
247
|
+
wxcli device-settings validate-a-list --json-body '{"macs":["AABBCCDDEEFF"]}'
|
|
248
|
+
|
|
249
|
+
# Create the device
|
|
250
|
+
wxcli devices create --mac AABBCCDDEEFF --workspace-id WORKSPACE_ID --model "DMS Cisco 8845"
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Generate activation code:**
|
|
254
|
+
|
|
255
|
+
Activation codes allow a phone to self-register when the user enters the code on the phone screen.
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# For a workspace device
|
|
259
|
+
wxcli devices create-activation-code --workspace-id WORKSPACE_ID
|
|
260
|
+
|
|
261
|
+
# For a person's device (model required for phones)
|
|
262
|
+
wxcli devices create-activation-code --person-id PERSON_ID --model "DMS Cisco 8845"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
The code expires after a set period. The user enters it on the phone's activation screen, and the device auto-registers with Webex Calling.
|
|
266
|
+
|
|
267
|
+
Activation codes provide a zero-touch provisioning workflow:
|
|
268
|
+
|
|
269
|
+
1. **Admin generates code** via `wxcli devices create-activation-code`
|
|
270
|
+
2. **Code is communicated** to the on-site technician or end user
|
|
271
|
+
3. **User enters code** on the phone's activation screen
|
|
272
|
+
4. **Phone auto-registers** with Webex Calling, downloads config, and becomes operational
|
|
273
|
+
5. **Code expires** after the configured period (typically 7 days)
|
|
274
|
+
|
|
275
|
+
> **NOTE:** Activation codes for phones require a `model` parameter. RoomOS collaboration devices do not require a model.
|
|
276
|
+
|
|
277
|
+
**Delete a device:**
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
wxcli devices delete DEVICE_ID
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
> **WARNING:** Deleting a device deregisters it. The device must be reactivated (new activation code or re-provisioned by MAC) to be reused.
|
|
284
|
+
|
|
285
|
+
**Update device tags:**
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
wxcli devices update DEVICE_ID --output json
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
> **NOTE:** Tag operations use JSON Patch format. The CLI handles this internally. Tags are useful for filtering devices in bulk operations (e.g., apply line key templates by tag).
|
|
292
|
+
|
|
293
|
+
### 6b. DECT workflow -- Network, Base Station, Handset (strict dependency)
|
|
294
|
+
|
|
295
|
+
DECT provisioning follows a strict dependency chain. Each step depends on the previous one completing first.
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
DECT Network --> Base Station(s) --> Handset(s)
|
|
299
|
+
(step 1) (step 2) (step 3)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**You cannot skip steps. A base station requires a network. A handset requires a base station.**
|
|
303
|
+
|
|
304
|
+
**Create a DECT network:**
|
|
305
|
+
|
|
306
|
+
Collect from user:
|
|
307
|
+
|
|
308
|
+
| Parameter | Required | Notes |
|
|
309
|
+
|-----------|:--------:|-------|
|
|
310
|
+
| Location ID | Yes | Positional argument |
|
|
311
|
+
| Name | Yes | Unique per location, 1-40 characters |
|
|
312
|
+
| Model | Yes | `DMS Cisco DBS110` (single-cell, 1 base, 30 lines) or `DMS Cisco DBS210` (multi-cell, up to 250 bases, 1000 lines) |
|
|
313
|
+
| Default access code enabled | Yes | `true` = shared 4-digit code; `false` = auto-generated per-handset |
|
|
314
|
+
| Default access code | If enabled | 4 numeric digits, unique within the location |
|
|
315
|
+
| Display name | No | Shown on handsets, max 11 characters |
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
# Create DECT network
|
|
319
|
+
wxcli dect-devices create LOCATION_ID \
|
|
320
|
+
--name "Building A DECT" \
|
|
321
|
+
--model "DMS Cisco DBS210" \
|
|
322
|
+
--default-access-code-enabled \
|
|
323
|
+
--default-access-code 1234 \
|
|
324
|
+
--display-name "Bldg A"
|
|
325
|
+
|
|
326
|
+
# List DECT networks
|
|
327
|
+
wxcli dect-devices list --output json
|
|
328
|
+
|
|
329
|
+
# Show network details
|
|
330
|
+
wxcli dect-devices show LOCATION_ID DECT_NETWORK_ID --output json
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Add base stations:**
|
|
334
|
+
|
|
335
|
+
Base stations require MAC addresses from the physical DECT base station hardware.
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
# Create base station(s) by MAC (no --base-station-macs flag; use --json-body)
|
|
339
|
+
wxcli dect-devices create-base-stations LOCATION_ID DECT_NETWORK_ID \
|
|
340
|
+
--json-body '{"baseStationMacs":["AABBCCDDEEFF"]}'
|
|
341
|
+
|
|
342
|
+
# List base stations
|
|
343
|
+
wxcli dect-devices list-base-stations LOCATION_ID DECT_NETWORK_ID --output json
|
|
344
|
+
|
|
345
|
+
# Show base station details
|
|
346
|
+
wxcli dect-devices show-base-stations LOCATION_ID DECT_NETWORK_ID BASE_STATION_ID --output json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Add handsets:**
|
|
350
|
+
|
|
351
|
+
Each handset supports up to 2 lines. Line 1 must be a person or workspace (place). Line 2 can also be a virtual line.
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
# Search for available members to assign to handsets
|
|
355
|
+
wxcli dect-devices list-available-members --output json
|
|
356
|
+
|
|
357
|
+
# Add a single handset
|
|
358
|
+
wxcli dect-devices create-handsets LOCATION_ID DECT_NETWORK_ID \
|
|
359
|
+
--line1-member-id PERSON_ID \
|
|
360
|
+
--custom-display-name "Reception"
|
|
361
|
+
|
|
362
|
+
# Add handsets in bulk (up to 50)
|
|
363
|
+
wxcli dect-devices create-bulk LOCATION_ID DECT_NETWORK_ID --json-body '{
|
|
364
|
+
"items": [
|
|
365
|
+
{"line1MemberId": "PERSON_ID_1", "customDisplayName": "User 1"},
|
|
366
|
+
{"line1MemberId": "PERSON_ID_2", "customDisplayName": "User 2"}
|
|
367
|
+
]
|
|
368
|
+
}'
|
|
369
|
+
|
|
370
|
+
# List handsets
|
|
371
|
+
wxcli dect-devices list-handsets LOCATION_ID DECT_NETWORK_ID --output json
|
|
372
|
+
|
|
373
|
+
# Update handset line assignment
|
|
374
|
+
wxcli dect-devices update-handsets LOCATION_ID DECT_NETWORK_ID HANDSET_ID \
|
|
375
|
+
--line1-member-id NEW_PERSON_ID \
|
|
376
|
+
--custom-display-name "Updated Name"
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**DECT serviceability password:**
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
# Check password status
|
|
383
|
+
wxcli dect-devices show-serviceability-password LOCATION_ID DECT_NETWORK_ID --output json
|
|
384
|
+
|
|
385
|
+
# Generate and enable (WARNING: may reboot entire DECT network)
|
|
386
|
+
wxcli dect-devices generate-and-enable LOCATION_ID DECT_NETWORK_ID --output json
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**DECT association queries:**
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
# DECT networks associated with a person
|
|
393
|
+
wxcli dect-devices list-dect-networks-people PERSON_ID --output json
|
|
394
|
+
|
|
395
|
+
# DECT networks associated with a workspace
|
|
396
|
+
wxcli dect-devices list-dect-networks-workspaces WORKSPACE_ID --output json
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### 6c. Workspace devices -- Create workspace, assign device, configure settings
|
|
400
|
+
|
|
401
|
+
**Create a Webex Calling workspace:**
|
|
402
|
+
|
|
403
|
+
Collect from user:
|
|
404
|
+
|
|
405
|
+
| Parameter | Required | Notes |
|
|
406
|
+
|-----------|:--------:|-------|
|
|
407
|
+
| Display name | Yes | Workspace name |
|
|
408
|
+
| Location ID | Yes | Cannot be changed after creation |
|
|
409
|
+
| Supported devices | Yes | `phones` (MPP) or `collaborationDevices` (Room/Board/Desk). Cannot be changed after creation |
|
|
410
|
+
| Extension or phone number | Yes (one of) | Not applicable for hot-desk-only workspaces |
|
|
411
|
+
| Workspace type | No | `desk`, `meetingRoom`, `huddle`, `focus`, `open`, `other` |
|
|
412
|
+
| Hotdesking status | No | `on` or `off` |
|
|
413
|
+
| Calling license ID | No | Auto-assigned from active subscriptions if omitted |
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# Create a workspace
|
|
417
|
+
wxcli workspaces create --json-body '{
|
|
418
|
+
"displayName": "Lobby Phone",
|
|
419
|
+
"locationId": "LOCATION_ID",
|
|
420
|
+
"type": "desk",
|
|
421
|
+
"supportedDevices": "phones",
|
|
422
|
+
"hotdeskingStatus": "off",
|
|
423
|
+
"calling": {
|
|
424
|
+
"type": "webexCalling",
|
|
425
|
+
"webexCalling": {
|
|
426
|
+
"extension": "2001",
|
|
427
|
+
"locationId": "LOCATION_ID"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}'
|
|
431
|
+
|
|
432
|
+
# List workspaces
|
|
433
|
+
wxcli workspaces list --output json
|
|
434
|
+
|
|
435
|
+
# Show workspace details
|
|
436
|
+
wxcli workspaces show WORKSPACE_ID --output json
|
|
437
|
+
|
|
438
|
+
# Get workspace capabilities
|
|
439
|
+
wxcli workspaces show-capabilities WORKSPACE_ID --output json
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
**Assign a device to the workspace:**
|
|
443
|
+
|
|
444
|
+
After creating the workspace, assign a device using either MAC address or activation code:
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# Option 1: Create device by MAC and assign to workspace
|
|
448
|
+
wxcli devices create --mac AABBCCDDEEFF --workspace-id WORKSPACE_ID --model "DMS Cisco 8845"
|
|
449
|
+
|
|
450
|
+
# Option 2: Generate activation code for the workspace
|
|
451
|
+
wxcli devices create-activation-code --workspace-id WORKSPACE_ID
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**List workspace devices:**
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
# List telephony devices assigned to a workspace
|
|
458
|
+
wxcli device-settings list-devices-workspaces WORKSPACE_ID --output json
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
**Configure workspace call settings:**
|
|
462
|
+
|
|
463
|
+
Workspace call settings mirror person call settings. Use `wxcli workspace-settings`:
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
# Call forwarding
|
|
467
|
+
wxcli workspace-settings show WORKSPACE_ID --output json
|
|
468
|
+
wxcli workspace-settings update WORKSPACE_ID --json-body '{"callForwarding": {"always": {"enabled": true, "destination": "+15551234567"}}}'
|
|
469
|
+
|
|
470
|
+
# Call waiting
|
|
471
|
+
wxcli workspace-settings show-call-waiting WORKSPACE_ID --output json
|
|
472
|
+
wxcli workspace-settings update-call-waiting WORKSPACE_ID --enabled
|
|
473
|
+
|
|
474
|
+
# Caller ID
|
|
475
|
+
wxcli workspace-settings list WORKSPACE_ID --output json
|
|
476
|
+
|
|
477
|
+
# Monitoring (BLF)
|
|
478
|
+
wxcli workspace-settings list-monitoring WORKSPACE_ID --output json
|
|
479
|
+
|
|
480
|
+
# DND
|
|
481
|
+
wxcli workspace-settings show-do-not-disturb WORKSPACE_ID --output json
|
|
482
|
+
wxcli workspace-settings update-do-not-disturb WORKSPACE_ID --enabled
|
|
483
|
+
|
|
484
|
+
# Voicemail
|
|
485
|
+
wxcli workspace-settings show-voicemail WORKSPACE_ID --output json
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
**Delete a workspace:**
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
wxcli workspaces delete WORKSPACE_ID
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
> **WARNING:** Deleting a workspace also deletes all associated devices. Those devices must be reactivated to be reused.
|
|
495
|
+
|
|
496
|
+
### 6d. Device settings configuration
|
|
497
|
+
|
|
498
|
+
**Device members (line assignment):**
|
|
499
|
+
|
|
500
|
+
Manage which users/lines appear on a phone:
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
# Get current members on a device
|
|
504
|
+
wxcli device-settings list DEVICE_ID --output json
|
|
505
|
+
|
|
506
|
+
# Search for available members to add as shared lines
|
|
507
|
+
wxcli device-settings list-available-members DEVICE_ID --output json
|
|
508
|
+
|
|
509
|
+
# Update members (add shared line appearance)
|
|
510
|
+
# IMPORTANT: every member entry MUST include lineWeight and primaryOwner — omitting either returns 400
|
|
511
|
+
wxcli device-settings update DEVICE_ID --json-body '{
|
|
512
|
+
"members": [
|
|
513
|
+
{"id": "PRIMARY_PERSON_ID", "port": 1, "lineType": "PRIMARY", "primaryOwner": true, "lineWeight": 1},
|
|
514
|
+
{"id": "SHARED_PERSON_ID", "port": 2, "lineType": "SHARED_LINE", "primaryOwner": false, "lineWeight": 1}
|
|
515
|
+
]
|
|
516
|
+
}'
|
|
517
|
+
|
|
518
|
+
# Apply changes to push config to the physical device
|
|
519
|
+
wxcli device-settings apply-changes-for DEVICE_ID
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
**Device-level settings (MPP/ATA):**
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
# Get device settings (model required)
|
|
526
|
+
wxcli device-settings show-settings-devices DEVICE_ID --device-model "DMS Cisco 8845" --output json
|
|
527
|
+
|
|
528
|
+
# Update device settings
|
|
529
|
+
wxcli device-settings update-settings-devices DEVICE_ID --json-body '{
|
|
530
|
+
"customEnabled": true,
|
|
531
|
+
"customizations": {"mpp": {"displayNameFormat": "PERSON_LAST_THEN_FIRST_NAME"}}
|
|
532
|
+
}'
|
|
533
|
+
|
|
534
|
+
# Get person-level device settings (compression)
|
|
535
|
+
wxcli device-settings show-settings-devices-3 PERSON_ID --output json
|
|
536
|
+
|
|
537
|
+
# Get workspace-level device settings (compression)
|
|
538
|
+
wxcli device-settings show-settings-devices-4 WORKSPACE_ID --output json
|
|
539
|
+
|
|
540
|
+
# Get location-level device settings
|
|
541
|
+
wxcli device-settings show-settings-devices-1 LOCATION_ID --output json
|
|
542
|
+
|
|
543
|
+
# Get org-level device settings
|
|
544
|
+
wxcli device-settings show-settings-devices-2 --output json
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
**Line key templates:**
|
|
548
|
+
|
|
549
|
+
Line key templates define the button layout for phone models org-wide:
|
|
550
|
+
|
|
551
|
+
```bash
|
|
552
|
+
# List existing templates
|
|
553
|
+
wxcli device-settings list-line-key-templates --output json
|
|
554
|
+
|
|
555
|
+
# Create a template
|
|
556
|
+
wxcli device-settings create --json-body '{
|
|
557
|
+
"templateName": "Standard Layout",
|
|
558
|
+
"deviceModel": "DMS Cisco 8845",
|
|
559
|
+
"lineKeys": [
|
|
560
|
+
{"lineKeyIndex": 1, "lineKeyType": "PRIMARY_LINE"},
|
|
561
|
+
{"lineKeyIndex": 2, "lineKeyType": "MONITOR"},
|
|
562
|
+
{"lineKeyIndex": 3, "lineKeyType": "SPEED_DIAL", "lineKeyLabel": "Front Desk", "lineKeyValue": "1000"},
|
|
563
|
+
{"lineKeyIndex": 4, "lineKeyType": "OPEN"}
|
|
564
|
+
]
|
|
565
|
+
}'
|
|
566
|
+
|
|
567
|
+
# Preview how many devices would be affected
|
|
568
|
+
wxcli device-settings preview-apply-line TEMPLATE_ID --output json
|
|
569
|
+
|
|
570
|
+
# Apply template to devices (has named flags — simpler than --json-body)
|
|
571
|
+
wxcli device-settings create-apply-line-key-template --action APPLY_TEMPLATE --template-id TEMPLATE_ID
|
|
572
|
+
|
|
573
|
+
# Check apply job status
|
|
574
|
+
wxcli device-settings list-apply-line-key-template --output json
|
|
575
|
+
wxcli device-settings show-apply-line-key-template JOB_ID --output json
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
**Line key types:**
|
|
579
|
+
|
|
580
|
+
| Type | Description |
|
|
581
|
+
|------|-------------|
|
|
582
|
+
| `PRIMARY_LINE` | User's primary line |
|
|
583
|
+
| `SHARED_LINE` | Shared line appearance |
|
|
584
|
+
| `MONITOR` | BLF (busy lamp field) monitoring |
|
|
585
|
+
| `CALL_PARK_EXTENSION` | Dedicated call park button |
|
|
586
|
+
| `SPEED_DIAL` | Speed dial (requires label + value) |
|
|
587
|
+
| `OPEN` | Available for user self-configuration |
|
|
588
|
+
| `CLOSED` | Locked/unavailable |
|
|
589
|
+
| `MODE_MANAGEMENT` | Operating mode control |
|
|
590
|
+
|
|
591
|
+
**Device layout (per-device customization):**
|
|
592
|
+
|
|
593
|
+
```bash
|
|
594
|
+
# Get current device layout
|
|
595
|
+
wxcli device-settings list-layout DEVICE_ID --output json
|
|
596
|
+
|
|
597
|
+
# Update layout
|
|
598
|
+
wxcli device-settings update-layout DEVICE_ID --json-body '{
|
|
599
|
+
"layoutMode": "CUSTOM",
|
|
600
|
+
"lineKeys": [
|
|
601
|
+
{"lineKeyIndex": 1, "lineKeyType": "PRIMARY_LINE"},
|
|
602
|
+
{"lineKeyIndex": 2, "lineKeyType": "SPEED_DIAL", "lineKeyLabel": "Lobby", "lineKeyValue": "2000"}
|
|
603
|
+
]
|
|
604
|
+
}'
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
**Background images:**
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
# List org background images
|
|
611
|
+
wxcli device-settings list-background-images --output json
|
|
612
|
+
|
|
613
|
+
# Upload a background image to a device — no CLI (multipart upload, generator cannot render)
|
|
614
|
+
# Raw HTTP fallback: POST /telephony/config/devices/{deviceId}/actions/backgroundImageUpload/invoke (multipart/form-data)
|
|
615
|
+
|
|
616
|
+
# Delete background images
|
|
617
|
+
wxcli device-settings delete-background-images --json-body '{
|
|
618
|
+
"backgroundImages": [{"fileName": "logo.png", "forceDelete": true}]
|
|
619
|
+
}'
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
**MAC address validation:**
|
|
623
|
+
|
|
624
|
+
```bash
|
|
625
|
+
wxcli device-settings validate-a-list --json-body '{"macs":["AABBCCDDEEFF","112233445566"]}' --output json
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
States: `AVAILABLE`, `UNAVAILABLE`, `DUPLICATE_IN_LIST`, `INVALID`
|
|
629
|
+
|
|
630
|
+
### 6e. Hot desking configuration
|
|
631
|
+
|
|
632
|
+
Hot desking allows users to temporarily sign into a shared workspace phone and use it as their own.
|
|
633
|
+
|
|
634
|
+
**Workspace side: enable hot desking:**
|
|
635
|
+
|
|
636
|
+
When creating a workspace, set `hotdeskingStatus` to `on`. For hot-desk-only workspaces, do not set `phoneNumber`, `extension`, `calendar`, or `deviceHostedMeetings`.
|
|
637
|
+
|
|
638
|
+
**Person side: enable hoteling:**
|
|
639
|
+
|
|
640
|
+
Use `wxcli device-settings update-hoteling PERSON_ID --json-body '{"hoteling":{"enabled":true}}'` to enable hoteling on a person's profile. **Do NOT use `wxcli user-call-settings`** — that CLI group does not exist (its orphan source file was deleted at the 2026-07-01 spec sync; the registered group is `user-settings`).
|
|
641
|
+
|
|
642
|
+
**Hoteling read/write asymmetry:** The update command is `wxcli device-settings update-hoteling`, but the read/verify command is `wxcli user-settings show-hoteling PERSON_ID` — they are in different CLI groups. There is no `show-hoteling` in `device-settings`.
|
|
643
|
+
|
|
644
|
+
**Manage hot desk sessions:**
|
|
645
|
+
|
|
646
|
+
```bash
|
|
647
|
+
# List active hot desk sessions
|
|
648
|
+
wxcli hot-desk list --output json
|
|
649
|
+
|
|
650
|
+
# List sessions for a specific person
|
|
651
|
+
wxcli hot-desk list --person-id PERSON_ID --output json
|
|
652
|
+
|
|
653
|
+
# List sessions for a specific workspace
|
|
654
|
+
wxcli hot-desk list --workspace-id WORKSPACE_ID --output json
|
|
655
|
+
|
|
656
|
+
# End a hot desk session
|
|
657
|
+
wxcli hot-desk delete SESSION_ID
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
**Voice portal hot desking sign-in:**
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
# View location-level voice portal hot desking settings
|
|
664
|
+
wxcli hot-desking-portal show LOCATION_ID --output json
|
|
665
|
+
|
|
666
|
+
# Update location-level settings
|
|
667
|
+
wxcli hot-desking-portal update LOCATION_ID --json-body '{...}'
|
|
668
|
+
|
|
669
|
+
# View user-level guest hot desking settings
|
|
670
|
+
wxcli hot-desking-portal show-guest PERSON_ID --output json
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
---
|
|
674
|
+
|
|
675
|
+
## Step 7: Verify
|
|
676
|
+
|
|
677
|
+
After execution, fetch details back and confirm:
|
|
678
|
+
|
|
679
|
+
```bash
|
|
680
|
+
# Verify device creation
|
|
681
|
+
wxcli devices show DEVICE_ID --output json
|
|
682
|
+
|
|
683
|
+
# Verify DECT network
|
|
684
|
+
wxcli dect-devices show LOCATION_ID DECT_NETWORK_ID --output json
|
|
685
|
+
|
|
686
|
+
# Verify workspace
|
|
687
|
+
wxcli workspaces show WORKSPACE_ID --output json
|
|
688
|
+
|
|
689
|
+
# Verify device members/lines
|
|
690
|
+
wxcli device-settings list DEVICE_ID --output json
|
|
691
|
+
|
|
692
|
+
# Verify device layout
|
|
693
|
+
wxcli device-settings list-layout DEVICE_ID --output json
|
|
694
|
+
|
|
695
|
+
# Verify workspace devices
|
|
696
|
+
wxcli device-settings list-devices-workspaces WORKSPACE_ID --output json
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
## Step 8: Report results
|
|
700
|
+
|
|
701
|
+
Present the results:
|
|
702
|
+
|
|
703
|
+
```
|
|
704
|
+
DEVICE OPERATION COMPLETE
|
|
705
|
+
=========================
|
|
706
|
+
Operation: [type]
|
|
707
|
+
Device: [display_name]
|
|
708
|
+
ID: [device_id]
|
|
709
|
+
MAC: [mac_address]
|
|
710
|
+
Model: [model]
|
|
711
|
+
Assigned to: [person/workspace name] ([id])
|
|
712
|
+
Location: [location_name]
|
|
713
|
+
Status: [activation_state]
|
|
714
|
+
|
|
715
|
+
Next steps:
|
|
716
|
+
- [Operation-specific next steps]
|
|
717
|
+
- [e.g., "Enter activation code XXXX-XXXX on the phone"]
|
|
718
|
+
- [e.g., "Configure line key template for standardized button layout"]
|
|
719
|
+
- [e.g., "Add shared line appearances via device-settings update"]
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
---
|
|
723
|
+
|
|
724
|
+
## Critical Rules
|
|
725
|
+
|
|
726
|
+
1. **Always verify location exists** before any device operation. Devices and workspaces are location-scoped.
|
|
727
|
+
2. **Always show the deployment plan** (Step 5) and wait for user confirmation before executing.
|
|
728
|
+
3. **Always call `apply-changes-for` after settings changes.** After updating device members, settings, or layout, call `wxcli device-settings apply-changes-for DEVICE_ID` to push config to the physical device. Without this, changes exist only in the cloud.
|
|
729
|
+
4. **DECT dependency chain is strict.** Network must exist before base stations. Base stations must exist before handsets. You cannot skip steps.
|
|
730
|
+
5. **DECT serviceability password operations can reboot the entire network.** Generating or toggling the password triggers a network-wide reboot. Schedule during maintenance windows.
|
|
731
|
+
6. **90-second cooldown on DECT handset changes.** Adding or removing handsets within 90 seconds may leave base stations out of sync until rebooted.
|
|
732
|
+
7. **Adding a DECT handset to a Standard license user disables Webex Calling** on their mobile, tablet, desktop, and browser apps. Deleting the handset re-enables it. Use Professional licenses for users who need both.
|
|
733
|
+
8. **Workspace `location_id` and `supported_devices` are immutable.** Set correctly on creation; they cannot be changed afterward.
|
|
734
|
+
9. **Deleting a workspace deletes all associated devices.** Those devices must be reactivated (new activation code or MAC re-provision) to be reused.
|
|
735
|
+
10. **Hot-desk-only workspaces** cannot have `phoneNumber`, `extension`, `calendar`, or `deviceHostedMeetings` set. These cause errors if provided.
|
|
736
|
+
11. **`deviceModel` is required for device settings GET/PUT.** Omitting it from `wxcli device-settings show-settings-devices` returns an error.
|
|
737
|
+
12. **Device IDs differ between API surfaces.** The `id` from `GET /devices` (cloud CRUD) may differ from the telephony `callingDeviceId`. Use the correct ID for each CLI group.
|
|
738
|
+
13. **No API for auto-generated DECT access codes.** When `defaultAccessCodeEnabled` is `false`, per-handset codes are auto-generated but cannot be retrieved via API. Use Control Hub instead.
|
|
739
|
+
14. **DECT handset Line 1 vs Line 2 member types.** Line 1 supports only PEOPLE and PLACE. Line 2 also supports VIRTUAL_LINE. Virtual lines cannot be the primary (line 1) member.
|
|
740
|
+
15. **Activation codes for phones require a model parameter.** RoomOS collaboration devices do not require a model.
|
|
741
|
+
16. **Background image limits.** Max 100 images per org. Upload max 625 KB, `.jpeg` or `.png` only. Max 10 images per delete request.
|
|
742
|
+
17. **DECT network create response uses `dectNetworkId`, not `id`.** The CLI handles this, but if using raw HTTP, parse the correct key.
|
|
743
|
+
18. **DECT is not supported for Webex for Government (FedRAMP).**
|
|
744
|
+
19. **Workspace call settings mirror person call settings.** Use `wxcli workspace-settings` with the workspace ID. The sub-API is the same as person settings but workspace-scoped.
|
|
745
|
+
20. **Maximum 5 devices per user (hardware + soft clients).** `POST /devices` and `POST /devices/activationCode` return HTTP 400 `"Phones cannot be added to this user"` on the 6th device. Server-enforced, not configurable. Orphan devices from prior failed attempts count against the cap — delete stale devices before retrying. See `docs/reference/devices-core.md` Gotcha #12.
|
|
746
|
+
21. **Model string format differs by phone family.** Classic MPP phones use `"DMS Cisco 8845"` (with DMS prefix). 9800-series phones use `"Cisco 9861"` (no DMS prefix). Using the wrong format for device creation or line key templates will fail. Check `wxcli device-settings list-supported-devices-dects --output json` for exact model strings.
|
|
747
|
+
22. **DECT display name character limits.** Network `displayName` is max 11 characters. Handset `customDisplayName` is 1-16 characters. Exceeding limits returns 400.
|
|
748
|
+
23. **DECT access code must be unique within the location.** If two DECT networks at the same location share an access code, handsets may register with the wrong network.
|
|
749
|
+
|
|
750
|
+
---
|
|
751
|
+
|
|
752
|
+
## Registered CLI Groups (this skill only)
|
|
753
|
+
|
|
754
|
+
These are the **exact group names** registered in `wxcli`. Do not use any other group names:
|
|
755
|
+
|
|
756
|
+
| CLI Group | Source File | Commands |
|
|
757
|
+
|-----------|-----------|----------|
|
|
758
|
+
| `wxcli devices` | `devices.py` | list, create, show, update, delete, create-activation-code |
|
|
759
|
+
| `wxcli device-settings` | `device_settings.py` | 46 commands (members, LKT, layout, settings, hoteling, validation, background images, jobs) |
|
|
760
|
+
| `wxcli dect-devices` | `dect_devices.py` | 23 commands (networks, base stations, handsets, bulk, associations, serviceability) |
|
|
761
|
+
| `wxcli workspaces` | `workspaces.py` | list, create, show, update, delete, show-capabilities |
|
|
762
|
+
| `wxcli workspace-settings` | `workspace_settings.py` | 60+ commands (call settings, monitoring, permissions, voicemail, recording) |
|
|
763
|
+
| `wxcli device-configurations` | `device_configurations.py` | show, update (PhoneOS/RoomOS config keys) |
|
|
764
|
+
| `wxcli hot-desk` | `hot_desk.py` | list, delete |
|
|
765
|
+
| `wxcli hot-desking-portal` | `hot_desking_portal.py` | show, update, show-guest, update-guest |
|
|
766
|
+
|
|
767
|
+
**NOT registered:** `user-call-settings` (file exists but not wired into CLI). Use `wxcli device-settings update-hoteling` for person-level hoteling.
|
|
768
|
+
|
|
769
|
+
---
|
|
770
|
+
|
|
771
|
+
## Scope Quick Reference
|
|
772
|
+
|
|
773
|
+
| CLI Group | Read Scope | Write Scope |
|
|
774
|
+
|-----------|-----------|-------------|
|
|
775
|
+
| `wxcli devices` | `spark-admin:devices_read` | `spark-admin:devices_write` |
|
|
776
|
+
| `wxcli device-settings` | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
777
|
+
| `wxcli dect-devices` | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
778
|
+
| `wxcli workspaces` | `spark-admin:workspaces_read` | `spark-admin:workspaces_write` |
|
|
779
|
+
| `wxcli workspace-settings` | `spark-admin:workspaces_read` | `spark-admin:workspaces_write` |
|
|
780
|
+
| `wxcli hot-desk` | (undocumented) | (undocumented) |
|
|
781
|
+
| `wxcli hot-desking-portal` | `spark-admin:telephony_config_read` | `spark-admin:telephony_config_write` |
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
## Context Compaction Recovery
|
|
786
|
+
|
|
787
|
+
If context compacts mid-execution, recover by:
|
|
788
|
+
1. Read the deployment plan from `docs/plans/` to recover what was planned
|
|
789
|
+
2. Check what's already been created: run the relevant `list` / `show` commands
|
|
790
|
+
3. Resume from the first incomplete step
|