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.
Files changed (413) hide show
  1. wxcli/__init__.py +4 -0
  2. wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
  3. wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
  4. wxcli/_playbook/.claude/rules/cleanup.md +29 -0
  5. wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
  6. wxcli/_playbook/.claude/rules/org-health.md +14 -0
  7. wxcli/_playbook/.claude/settings.json +8 -0
  8. wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
  9. wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
  10. wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
  11. wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
  12. wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
  13. wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
  14. wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
  15. wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
  16. wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
  17. wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
  18. wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
  19. wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
  20. wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
  21. wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
  22. wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
  23. wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
  24. wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
  25. wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
  26. wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
  27. wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
  28. wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
  29. wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
  30. wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
  31. wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
  32. wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
  33. wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
  34. wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
  35. wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
  36. wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
  37. wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
  38. wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
  39. wxcli/_playbook/CLAUDE.md +373 -0
  40. wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
  41. wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
  42. wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
  43. wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
  44. wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
  45. wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
  46. wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
  47. wxcli/_playbook/docs/reference/admin-partner.md +357 -0
  48. wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
  49. wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
  50. wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
  51. wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
  52. wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
  53. wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
  54. wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
  55. wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
  56. wxcli/_playbook/docs/reference/authentication.md +965 -0
  57. wxcli/_playbook/docs/reference/call-control.md +1205 -0
  58. wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
  59. wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
  60. wxcli/_playbook/docs/reference/call-routing.md +2304 -0
  61. wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
  62. wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
  63. wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
  64. wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
  65. wxcli/_playbook/docs/reference/devices-core.md +1869 -0
  66. wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
  67. wxcli/_playbook/docs/reference/devices-platform.md +467 -0
  68. wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
  69. wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
  70. wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
  71. wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
  72. wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
  73. wxcli/_playbook/docs/reference/meetings-content.md +473 -0
  74. wxcli/_playbook/docs/reference/meetings-core.md +903 -0
  75. wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
  76. wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
  77. wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
  78. wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
  79. wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
  80. wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
  81. wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
  82. wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
  83. wxcli/_playbook/docs/reference/provisioning.md +1366 -0
  84. wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
  85. wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
  86. wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
  87. wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
  88. wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
  89. wxcli/_version.py +24 -0
  90. wxcli/auth.py +137 -0
  91. wxcli/commands/__init__.py +0 -0
  92. wxcli/commands/_registry.py +181 -0
  93. wxcli/commands/activation_email.py +103 -0
  94. wxcli/commands/admin_recordings.py +585 -0
  95. wxcli/commands/analytics.py +105 -0
  96. wxcli/commands/announcement_playlists.py +219 -0
  97. wxcli/commands/announcements.py +519 -0
  98. wxcli/commands/archive_users.py +36 -0
  99. wxcli/commands/attachment_actions.py +60 -0
  100. wxcli/commands/audit_events.py +83 -0
  101. wxcli/commands/authorizations.py +113 -0
  102. wxcli/commands/auto_attendant.py +642 -0
  103. wxcli/commands/broadworks_billing_reports.py +126 -0
  104. wxcli/commands/broadworks_enterprises.py +160 -0
  105. wxcli/commands/broadworks_subscribers.py +319 -0
  106. wxcli/commands/broadworks_workspaces.py +108 -0
  107. wxcli/commands/call_controls.py +1304 -0
  108. wxcli/commands/call_park.py +494 -0
  109. wxcli/commands/call_pickup.py +229 -0
  110. wxcli/commands/call_queue.py +1878 -0
  111. wxcli/commands/call_recording.py +707 -0
  112. wxcli/commands/call_routing.py +1610 -0
  113. wxcli/commands/call_settings_for_me_phase_5.py +212 -0
  114. wxcli/commands/caller_reputation.py +169 -0
  115. wxcli/commands/calling_service.py +305 -0
  116. wxcli/commands/cc_address_book.py +770 -0
  117. wxcli/commands/cc_agent_greetings.py +242 -0
  118. wxcli/commands/cc_agent_summaries.py +39 -0
  119. wxcli/commands/cc_agent_wellbeing.py +216 -0
  120. wxcli/commands/cc_agents.py +425 -0
  121. wxcli/commands/cc_ai_assistant.py +55 -0
  122. wxcli/commands/cc_ai_feature.py +294 -0
  123. wxcli/commands/cc_audio_files.py +149 -0
  124. wxcli/commands/cc_auto_csat.py +311 -0
  125. wxcli/commands/cc_aux_code.py +458 -0
  126. wxcli/commands/cc_business_hour.py +353 -0
  127. wxcli/commands/cc_call_monitoring.py +228 -0
  128. wxcli/commands/cc_callbacks.py +194 -0
  129. wxcli/commands/cc_campaign.py +212 -0
  130. wxcli/commands/cc_captures.py +39 -0
  131. wxcli/commands/cc_contact_list.py +169 -0
  132. wxcli/commands/cc_contact_number.py +295 -0
  133. wxcli/commands/cc_data_sources.py +235 -0
  134. wxcli/commands/cc_desktop_layout.py +380 -0
  135. wxcli/commands/cc_desktop_profile.py +322 -0
  136. wxcli/commands/cc_dial_number.py +511 -0
  137. wxcli/commands/cc_dial_plan.py +347 -0
  138. wxcli/commands/cc_dnc.py +101 -0
  139. wxcli/commands/cc_entry_point.py +545 -0
  140. wxcli/commands/cc_ewt.py +51 -0
  141. wxcli/commands/cc_flow.py +477 -0
  142. wxcli/commands/cc_global_vars.py +430 -0
  143. wxcli/commands/cc_holiday_list.py +335 -0
  144. wxcli/commands/cc_journey.py +1261 -0
  145. wxcli/commands/cc_legacy_flows.py +49 -0
  146. wxcli/commands/cc_multimedia_profile.py +436 -0
  147. wxcli/commands/cc_notification.py +51 -0
  148. wxcli/commands/cc_outdial_ani.py +604 -0
  149. wxcli/commands/cc_overrides.py +341 -0
  150. wxcli/commands/cc_queue.py +1083 -0
  151. wxcli/commands/cc_queue_stats.py +55 -0
  152. wxcli/commands/cc_realtime.py +51 -0
  153. wxcli/commands/cc_resource_collection.py +312 -0
  154. wxcli/commands/cc_search.py +46 -0
  155. wxcli/commands/cc_site.py +400 -0
  156. wxcli/commands/cc_skill.py +350 -0
  157. wxcli/commands/cc_skill_profile.py +289 -0
  158. wxcli/commands/cc_subscriptions.py +426 -0
  159. wxcli/commands/cc_summaries.py +130 -0
  160. wxcli/commands/cc_tasks.py +844 -0
  161. wxcli/commands/cc_team.py +325 -0
  162. wxcli/commands/cc_user_profiles.py +349 -0
  163. wxcli/commands/cc_users.py +701 -0
  164. wxcli/commands/cc_work_types.py +363 -0
  165. wxcli/commands/cdr.py +89 -0
  166. wxcli/commands/classifications.py +38 -0
  167. wxcli/commands/cleanup.py +1427 -0
  168. wxcli/commands/client_settings.py +72 -0
  169. wxcli/commands/conference.py +328 -0
  170. wxcli/commands/configure.py +72 -0
  171. wxcli/commands/converged_recordings.py +347 -0
  172. wxcli/commands/converged_recordings_export.py +310 -0
  173. wxcli/commands/cq_playlists.py +42 -0
  174. wxcli/commands/cucm.py +2794 -0
  175. wxcli/commands/cucm_config.py +129 -0
  176. wxcli/commands/customer_assist.py +373 -0
  177. wxcli/commands/data_sources.py +227 -0
  178. wxcli/commands/dect_devices.py +787 -0
  179. wxcli/commands/device_configurations.py +77 -0
  180. wxcli/commands/device_dynamic_settings.py +320 -0
  181. wxcli/commands/device_settings.py +1489 -0
  182. wxcli/commands/devices.py +280 -0
  183. wxcli/commands/domains.py +142 -0
  184. wxcli/commands/ecm.py +178 -0
  185. wxcli/commands/emergency_services.py +827 -0
  186. wxcli/commands/events.py +83 -0
  187. wxcli/commands/external_voicemail.py +52 -0
  188. wxcli/commands/groups.py +206 -0
  189. wxcli/commands/guest_management.py +76 -0
  190. wxcli/commands/hds.py +340 -0
  191. wxcli/commands/hot_desk.py +67 -0
  192. wxcli/commands/hot_desking_members.py +118 -0
  193. wxcli/commands/hot_desking_portal.py +124 -0
  194. wxcli/commands/hunt_group.py +577 -0
  195. wxcli/commands/hybrid_clusters.py +71 -0
  196. wxcli/commands/hybrid_connectors.py +67 -0
  197. wxcli/commands/identity_org.py +159 -0
  198. wxcli/commands/init_playbook.py +155 -0
  199. wxcli/commands/licenses.py +106 -0
  200. wxcli/commands/live_monitoring.py +40 -0
  201. wxcli/commands/location_call_handling.py +577 -0
  202. wxcli/commands/location_schedules.py +341 -0
  203. wxcli/commands/location_settings.py +1297 -0
  204. wxcli/commands/location_voicemail.py +494 -0
  205. wxcli/commands/locations.py +336 -0
  206. wxcli/commands/meeting_captions.py +110 -0
  207. wxcli/commands/meeting_chats.py +63 -0
  208. wxcli/commands/meeting_invitees.py +234 -0
  209. wxcli/commands/meeting_messages.py +28 -0
  210. wxcli/commands/meeting_participants.py +278 -0
  211. wxcli/commands/meeting_polls.py +111 -0
  212. wxcli/commands/meeting_preferences.py +515 -0
  213. wxcli/commands/meeting_qa.py +78 -0
  214. wxcli/commands/meeting_qualities.py +43 -0
  215. wxcli/commands/meeting_reports.py +101 -0
  216. wxcli/commands/meeting_session_types.py +105 -0
  217. wxcli/commands/meeting_site.py +57 -0
  218. wxcli/commands/meeting_slido.py +44 -0
  219. wxcli/commands/meeting_summaries.py +92 -0
  220. wxcli/commands/meeting_tracking_codes.py +233 -0
  221. wxcli/commands/meeting_transcripts.py +230 -0
  222. wxcli/commands/meetings.py +1997 -0
  223. wxcli/commands/memberships.py +164 -0
  224. wxcli/commands/messages.py +213 -0
  225. wxcli/commands/mode_management.py +244 -0
  226. wxcli/commands/my_call_settings.py +3577 -0
  227. wxcli/commands/numbers.py +405 -0
  228. wxcli/commands/operating_modes.py +410 -0
  229. wxcli/commands/org_contacts.py +284 -0
  230. wxcli/commands/org_health_cli.py +55 -0
  231. wxcli/commands/org_settings.py +71 -0
  232. wxcli/commands/organizations.py +83 -0
  233. wxcli/commands/paging_group.py +257 -0
  234. wxcli/commands/partner_admins.py +141 -0
  235. wxcli/commands/partner_reports.py +188 -0
  236. wxcli/commands/partner_tags.py +216 -0
  237. wxcli/commands/people.py +279 -0
  238. wxcli/commands/person_call_settings.py +71 -0
  239. wxcli/commands/pstn.py +280 -0
  240. wxcli/commands/recording_report.py +154 -0
  241. wxcli/commands/report_templates.py +38 -0
  242. wxcli/commands/reports.py +144 -0
  243. wxcli/commands/resource_group_memberships.py +160 -0
  244. wxcli/commands/resource_groups.py +67 -0
  245. wxcli/commands/roles.py +63 -0
  246. wxcli/commands/room_tabs.py +160 -0
  247. wxcli/commands/rooms.py +225 -0
  248. wxcli/commands/scim_bulk.py +46 -0
  249. wxcli/commands/scim_groups.py +246 -0
  250. wxcli/commands/scim_schemas.py +82 -0
  251. wxcli/commands/scim_users.py +283 -0
  252. wxcli/commands/security_audit.py +54 -0
  253. wxcli/commands/service_apps.py +51 -0
  254. wxcli/commands/single_number_reach.py +209 -0
  255. wxcli/commands/team_memberships.py +155 -0
  256. wxcli/commands/teams.py +153 -0
  257. wxcli/commands/ucm_profile.py +42 -0
  258. wxcli/commands/update.py +219 -0
  259. wxcli/commands/user_settings.py +5116 -0
  260. wxcli/commands/video_mesh.py +1090 -0
  261. wxcli/commands/virtual_extensions.py +502 -0
  262. wxcli/commands/virtual_line_settings.py +2072 -0
  263. wxcli/commands/webhooks.py +176 -0
  264. wxcli/commands/wholesale_billing_reports.py +147 -0
  265. wxcli/commands/wholesale_provisioning.py +523 -0
  266. wxcli/commands/workspace_locations.py +339 -0
  267. wxcli/commands/workspace_metrics.py +103 -0
  268. wxcli/commands/workspace_personalization.py +70 -0
  269. wxcli/commands/workspace_settings.py +3347 -0
  270. wxcli/commands/workspaces.py +279 -0
  271. wxcli/commands/xapi.py +114 -0
  272. wxcli/config.py +139 -0
  273. wxcli/errors.py +77 -0
  274. wxcli/main.py +210 -0
  275. wxcli/migration/CLAUDE.md +106 -0
  276. wxcli/migration/__init__.py +1 -0
  277. wxcli/migration/advisory/CLAUDE.md +196 -0
  278. wxcli/migration/advisory/__init__.py +46 -0
  279. wxcli/migration/advisory/advisor.py +107 -0
  280. wxcli/migration/advisory/advisory_patterns.py +2552 -0
  281. wxcli/migration/advisory/recommendation_rules.py +835 -0
  282. wxcli/migration/cucm/CLAUDE.md +74 -0
  283. wxcli/migration/cucm/__init__.py +5 -0
  284. wxcli/migration/cucm/connection.py +265 -0
  285. wxcli/migration/cucm/discovery.py +225 -0
  286. wxcli/migration/cucm/extractors/__init__.py +1 -0
  287. wxcli/migration/cucm/extractors/announcements.py +92 -0
  288. wxcli/migration/cucm/extractors/base.py +90 -0
  289. wxcli/migration/cucm/extractors/device_profiles.py +98 -0
  290. wxcli/migration/cucm/extractors/devices.py +193 -0
  291. wxcli/migration/cucm/extractors/e911.py +103 -0
  292. wxcli/migration/cucm/extractors/features.py +309 -0
  293. wxcli/migration/cucm/extractors/helpers.py +73 -0
  294. wxcli/migration/cucm/extractors/informational.py +295 -0
  295. wxcli/migration/cucm/extractors/locations.py +221 -0
  296. wxcli/migration/cucm/extractors/moh.py +100 -0
  297. wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
  298. wxcli/migration/cucm/extractors/routing.py +493 -0
  299. wxcli/migration/cucm/extractors/shared_lines.py +146 -0
  300. wxcli/migration/cucm/extractors/templates.py +229 -0
  301. wxcli/migration/cucm/extractors/tier4.py +173 -0
  302. wxcli/migration/cucm/extractors/users.py +240 -0
  303. wxcli/migration/cucm/extractors/voicemail.py +243 -0
  304. wxcli/migration/cucm/extractors/workspaces.py +88 -0
  305. wxcli/migration/cucm/unity_connection.py +304 -0
  306. wxcli/migration/execute/CLAUDE.md +372 -0
  307. wxcli/migration/execute/__init__.py +303 -0
  308. wxcli/migration/execute/batch.py +277 -0
  309. wxcli/migration/execute/dependency.py +483 -0
  310. wxcli/migration/execute/engine.py +964 -0
  311. wxcli/migration/execute/handlers.py +2232 -0
  312. wxcli/migration/execute/planner.py +1939 -0
  313. wxcli/migration/execute/runtime.py +571 -0
  314. wxcli/migration/export/CLAUDE.md +49 -0
  315. wxcli/migration/export/__init__.py +8 -0
  316. wxcli/migration/export/csv_export.py +126 -0
  317. wxcli/migration/export/deployment_plan.py +479 -0
  318. wxcli/migration/export/json_export.py +60 -0
  319. wxcli/migration/models.py +941 -0
  320. wxcli/migration/phone_models.py +50 -0
  321. wxcli/migration/preflight/CLAUDE.md +52 -0
  322. wxcli/migration/preflight/__init__.py +89 -0
  323. wxcli/migration/preflight/checks.py +911 -0
  324. wxcli/migration/preflight/runner.py +293 -0
  325. wxcli/migration/rate_limiter.py +144 -0
  326. wxcli/migration/report/CLAUDE.md +245 -0
  327. wxcli/migration/report/__init__.py +7 -0
  328. wxcli/migration/report/appendix.py +2437 -0
  329. wxcli/migration/report/assembler.py +183 -0
  330. wxcli/migration/report/charts.py +263 -0
  331. wxcli/migration/report/executive.py +776 -0
  332. wxcli/migration/report/explainer.py +704 -0
  333. wxcli/migration/report/helpers.py +74 -0
  334. wxcli/migration/report/ingest.py +152 -0
  335. wxcli/migration/report/notice_templates.py +192 -0
  336. wxcli/migration/report/score.py +375 -0
  337. wxcli/migration/report/styles.py +1052 -0
  338. wxcli/migration/report/user_diff.py +1052 -0
  339. wxcli/migration/report/user_notice.py +425 -0
  340. wxcli/migration/state.py +139 -0
  341. wxcli/migration/store.py +860 -0
  342. wxcli/migration/transform/CLAUDE.md +107 -0
  343. wxcli/migration/transform/__init__.py +12 -0
  344. wxcli/migration/transform/analysis_pipeline.py +453 -0
  345. wxcli/migration/transform/analyzers/__init__.py +142 -0
  346. wxcli/migration/transform/analyzers/css_permission.py +189 -0
  347. wxcli/migration/transform/analyzers/css_routing.py +335 -0
  348. wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
  349. wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
  350. wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
  351. wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
  352. wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
  353. wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
  354. wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
  355. wxcli/migration/transform/analyzers/missing_data.py +300 -0
  356. wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
  357. wxcli/migration/transform/analyzers/shared_line.py +170 -0
  358. wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
  359. wxcli/migration/transform/analyzers/workspace_license.py +212 -0
  360. wxcli/migration/transform/cross_reference.py +1136 -0
  361. wxcli/migration/transform/cucm_pattern.py +246 -0
  362. wxcli/migration/transform/decisions.py +301 -0
  363. wxcli/migration/transform/e164.py +145 -0
  364. wxcli/migration/transform/engine.py +256 -0
  365. wxcli/migration/transform/mappers/CLAUDE.md +123 -0
  366. wxcli/migration/transform/mappers/__init__.py +76 -0
  367. wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
  368. wxcli/migration/transform/mappers/base.py +190 -0
  369. wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
  370. wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
  371. wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
  372. wxcli/migration/transform/mappers/css_mapper.py +868 -0
  373. wxcli/migration/transform/mappers/dect_mapper.py +367 -0
  374. wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
  375. wxcli/migration/transform/mappers/device_mapper.py +227 -0
  376. wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
  377. wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
  378. wxcli/migration/transform/mappers/e911_mapper.py +129 -0
  379. wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
  380. wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
  381. wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
  382. wxcli/migration/transform/mappers/line_mapper.py +310 -0
  383. wxcli/migration/transform/mappers/location_mapper.py +235 -0
  384. wxcli/migration/transform/mappers/moh_mapper.py +114 -0
  385. wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
  386. wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
  387. wxcli/migration/transform/mappers/routing_mapper.py +821 -0
  388. wxcli/migration/transform/mappers/snr_mapper.py +201 -0
  389. wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
  390. wxcli/migration/transform/mappers/user_mapper.py +264 -0
  391. wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
  392. wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
  393. wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
  394. wxcli/migration/transform/normalizers.py +2008 -0
  395. wxcli/migration/transform/pattern_converter.py +106 -0
  396. wxcli/migration/transform/pipeline.py +271 -0
  397. wxcli/migration/transform/rules.py +255 -0
  398. wxcli/org_health/CLAUDE.md +63 -0
  399. wxcli/org_health/__init__.py +7 -0
  400. wxcli/org_health/analyze.py +93 -0
  401. wxcli/org_health/checks.py +458 -0
  402. wxcli/org_health/collector.py +62 -0
  403. wxcli/org_health/models.py +78 -0
  404. wxcli/org_health/report.py +300 -0
  405. wxcli/output.py +101 -0
  406. wxcli-1.2.0.dist-info/METADATA +505 -0
  407. wxcli-1.2.0.dist-info/RECORD +413 -0
  408. wxcli-1.2.0.dist-info/WHEEL +5 -0
  409. wxcli-1.2.0.dist-info/entry_points.txt +2 -0
  410. wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
  411. wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
  412. wxcli-1.2.0.dist-info/scm_version.json +8 -0
  413. wxcli-1.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,383 @@
1
+ # Admin: Hybrid Infrastructure & Analytics
2
+
3
+ Hybrid cluster/connector monitoring, historical analytics, live meeting monitoring, and meeting quality analysis.
4
+
5
+ ## Sources
6
+
7
+ - `specs/webex-admin.json` -- OpenAPI 3.0 spec for admin/org management APIs (hybrid clusters, hybrid connectors, analytics, meeting qualities, live monitoring)
8
+ - [Webex Hybrid Services](https://developer.webex.com/docs/api/v1/hybrid-clusters) -- Official API docs
9
+ - [Meeting Qualities API](https://developer.webex.com/docs/api/v1/meeting-qualities) -- Official API docs
10
+
11
+ ---
12
+
13
+ ## Required Scopes
14
+
15
+ | Scope | Purpose |
16
+ |-------|---------|
17
+ | `spark-admin:hybrid_clusters_read` | List and get details for hybrid clusters. |
18
+ | `spark-admin:hybrid_connectors_read` | List and get details for hybrid connectors. |
19
+ | `analytics:read_all` | Access historical analytics (messaging, room devices, meetings). Also required for live monitoring and meeting qualities. |
20
+
21
+ **Admin requirement:** The authenticated user must be a full or read-only administrator for the organization.
22
+
23
+ ---
24
+
25
+ ## 1. Hybrid Clusters
26
+
27
+ Hybrid clusters represent on-premises infrastructure nodes registered to Webex (e.g., Expressway, calendar connector hosts). Use these commands to inventory and monitor cluster health.
28
+
29
+ ### CLI Commands
30
+
31
+ | Command | Description | Key Options |
32
+ |---------|-------------|-------------|
33
+ | `wxcli hybrid-clusters list` | List all hybrid clusters | `--limit`, `--offset`, `-o table\|json` |
34
+ | `wxcli hybrid-clusters show <id>` | Get details for a specific cluster | `-o table\|json` |
35
+
36
+ ### CLI Examples
37
+
38
+ ```bash
39
+ # List all hybrid clusters in the org
40
+ wxcli hybrid-clusters list
41
+
42
+ # List clusters as JSON for scripting
43
+ wxcli hybrid-clusters list -o json
44
+
45
+ # Get details for a specific cluster
46
+ wxcli hybrid-clusters show Y2lzY29zcGFyazovL3VzL0hZQlJJRF9DTFVTVEVSLzEyMzQ
47
+ ```
48
+
49
+ ### Raw HTTP Fallback
50
+
51
+ ```bash
52
+ # List hybrid clusters
53
+ curl -s -H "Authorization: Bearer $TOKEN" \
54
+ "https://webexapis.com/v1/hybrid/clusters" | jq '.items[]'
55
+
56
+ # Get cluster details
57
+ curl -s -H "Authorization: Bearer $TOKEN" \
58
+ "https://webexapis.com/v1/hybrid/clusters/{hybridClusterId}" | jq .
59
+ ```
60
+
61
+ ### API Details
62
+
63
+ | Property | Value |
64
+ |----------|-------|
65
+ | List endpoint | `GET https://webexapis.com/v1/hybrid/clusters` |
66
+ | Detail endpoint | `GET https://webexapis.com/v1/hybrid/clusters/{hybridClusterId}` |
67
+ | Response key (list) | `items` |
68
+ | Table columns | `id`, `name` |
69
+
70
+ ---
71
+
72
+ ## 2. Hybrid Connectors
73
+
74
+ Hybrid connectors are the individual service instances running on hybrid cluster nodes (e.g., Calendar Connector, Call Connector, Management Connector). Each connector belongs to a cluster.
75
+
76
+ ### CLI Commands
77
+
78
+ | Command | Description | Key Options |
79
+ |---------|-------------|-------------|
80
+ | `wxcli hybrid-connectors list` | List all hybrid connectors | `--limit`, `--offset`, `-o table\|json` |
81
+ | `wxcli hybrid-connectors show <id>` | Get details for a specific connector | `-o table\|json` |
82
+
83
+ ### CLI Examples
84
+
85
+ ```bash
86
+ # List all connectors
87
+ wxcli hybrid-connectors list
88
+
89
+ # List connectors as JSON
90
+ wxcli hybrid-connectors list -o json
91
+
92
+ # Get details for a specific connector
93
+ wxcli hybrid-connectors show Y2lzY29zcGFyazovL3VzL0hZQlJJRF9DT05ORUNUT1IvMTIz
94
+ ```
95
+
96
+ ### Raw HTTP Fallback
97
+
98
+ ```bash
99
+ # List hybrid connectors
100
+ curl -s -H "Authorization: Bearer $TOKEN" \
101
+ "https://webexapis.com/v1/hybrid/connectors" | jq '.items[]'
102
+
103
+ # Get connector details
104
+ curl -s -H "Authorization: Bearer $TOKEN" \
105
+ "https://webexapis.com/v1/hybrid/connectors/{connectorId}" | jq .
106
+ ```
107
+
108
+ ### API Details
109
+
110
+ | Property | Value |
111
+ |----------|-------|
112
+ | List endpoint | `GET https://webexapis.com/v1/hybrid/connectors` |
113
+ | Detail endpoint | `GET https://webexapis.com/v1/hybrid/connectors/{connectorId}` |
114
+ | Response key (list) | `items` |
115
+ | Table columns | `id`, `name` |
116
+
117
+ ---
118
+
119
+ ## 3. Live Monitoring
120
+
121
+ Retrieves live meeting metrics categorized by country. Despite the CLI command name `create`, this is a **read operation** -- the Webex API uses POST for this query, and the generator maps POST to `create`.
122
+
123
+ ### CLI Commands
124
+
125
+ | Command | Description | Key Options |
126
+ |---------|-------------|-------------|
127
+ | `wxcli live-monitoring create` | Get live meeting metrics by country | `--site-url`, `--json-body` |
128
+
129
+ ### CLI Examples
130
+
131
+ ```bash
132
+ # Get live meeting metrics for a specific site
133
+ wxcli live-monitoring create --site-url "mysite.webex.com"
134
+
135
+ # Get live meeting metrics with full JSON body
136
+ wxcli live-monitoring create --json-body '{"siteUrl": "mysite.webex.com"}'
137
+ ```
138
+
139
+ ### Raw HTTP Fallback
140
+
141
+ ```bash
142
+ # Get live meeting metrics by country (POST with JSON body)
143
+ curl -s -X POST -H "Authorization: Bearer $TOKEN" \
144
+ -H "Content-Type: application/json" \
145
+ -d '{"siteUrl": "mysite.webex.com"}' \
146
+ "https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry" | jq .
147
+ ```
148
+
149
+ ### API Details
150
+
151
+ | Property | Value |
152
+ |----------|-------|
153
+ | Endpoint | `POST https://webexapis.com/v1/livemonitoring/liveMeetingsByCountry` |
154
+ | Request body | `{"siteUrl": "..."}` (optional) |
155
+ | Method | POST (but semantically a read/query operation) |
156
+
157
+ ---
158
+
159
+ ## 4. Analytics (Historical)
160
+
161
+ Historical analytics covering messaging activity, room device usage, and meeting aggregates. Three separate commands query three different metric endpoints.
162
+
163
+ ### KNOWN BUG: `/v1/v1/` Double-Path
164
+
165
+ All three `analytics` commands have a confirmed bug in the generated code: the URL contains `/v1/v1/` instead of `/v1/`. For example, the `show` command hits `https://webexapis.com/v1/v1/analytics/messagingMetrics/dailyTotals` instead of the correct `https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals`. This causes all three commands to fail at runtime with a 404 or routing error.
166
+
167
+ **Workaround:** Use raw HTTP (curl) until a fixed release.
168
+
169
+ **Affected commands:**
170
+ - `wxcli analytics show` -- path: `/v1/v1/analytics/messagingMetrics/dailyTotals` (should be `/v1/analytics/messagingMetrics/dailyTotals`)
171
+ - `wxcli analytics show-daily-totals` -- path: `/v1/v1/analytics/roomDeviceMetrics/dailyTotals` (should be `/v1/analytics/roomDeviceMetrics/dailyTotals`)
172
+ - `wxcli analytics show-aggregates` -- path: `/v1/v1/analytics/meetingsMetrics/aggregates` (should be `/v1/analytics/meetingsMetrics/aggregates`)
173
+
174
+ ### CLI Commands
175
+
176
+ | Command | Description | Key Options |
177
+ |---------|-------------|-------------|
178
+ | `wxcli analytics show` | Messaging historical data (daily totals) | `--from`, `--to`, `-o json` |
179
+ | `wxcli analytics show-daily-totals` | Room device historical data (daily totals) | `--from`, `--to`, `-o json` |
180
+ | `wxcli analytics show-aggregates` | Meeting historical data (aggregates) | `--site-url` (required), `--from`, `--to`, `-o json` |
181
+
182
+ ### CLI Examples (will fail until bug is fixed)
183
+
184
+ ```bash
185
+ # Messaging metrics for a date range
186
+ wxcli analytics show --from 2026-03-01 --to 2026-03-15
187
+
188
+ # Room device metrics
189
+ wxcli analytics show-daily-totals --from 2026-03-01 --to 2026-03-15
190
+
191
+ # Meeting aggregates for a specific site (--site-url is required)
192
+ wxcli analytics show-aggregates --site-url "mysite.webex.com" --from 2026-03-01 --to 2026-03-15
193
+ ```
194
+
195
+ ### Raw HTTP Fallback (use these until the CLI bug is fixed)
196
+
197
+ ```bash
198
+ # Messaging metrics -- daily totals
199
+ curl -s -H "Authorization: Bearer $TOKEN" \
200
+ "https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals?from=2026-03-01&to=2026-03-15" | jq .
201
+
202
+ # Room device metrics -- daily totals
203
+ curl -s -H "Authorization: Bearer $TOKEN" \
204
+ "https://webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals?from=2026-03-01&to=2026-03-15" | jq .
205
+
206
+ # Meeting metrics -- aggregates (siteUrl is required)
207
+ curl -s -H "Authorization: Bearer $TOKEN" \
208
+ "https://webexapis.com/v1/analytics/meetingsMetrics/aggregates?siteUrl=mysite.webex.com&from=2026-03-01&to=2026-03-15" | jq .
209
+ ```
210
+
211
+ ### API Details
212
+
213
+ | Endpoint | Method | Description |
214
+ |----------|--------|-------------|
215
+ | `/v1/analytics/messagingMetrics/dailyTotals` | GET | Daily messaging activity totals |
216
+ | `/v1/analytics/roomDeviceMetrics/dailyTotals` | GET | Daily room device usage totals |
217
+ | `/v1/analytics/meetingsMetrics/aggregates` | GET | Meeting aggregate metrics (requires `siteUrl`) |
218
+
219
+ ### Query Parameters
220
+
221
+ | Parameter | Type | Required | Description |
222
+ |-----------|------|----------|-------------|
223
+ | `from` | UTC date string | No | Start date for the historical data window |
224
+ | `to` | UTC date string | No | End date for the historical data window |
225
+ | `siteUrl` | string | Meetings only | URL of the Webex site (required for `meetingsMetrics/aggregates`) |
226
+
227
+ ---
228
+
229
+ ## 5. Meeting Qualities
230
+
231
+ Retrieves media quality metrics for a specific meeting instance, including jitter, latency, and packet loss data per media session.
232
+
233
+ ### CLI Commands
234
+
235
+ | Command | Description | Key Options |
236
+ |---------|-------------|-------------|
237
+ | `wxcli meeting-qualities list` | Get meeting quality metrics | `--meeting-id`, `--max`, `--offset`, `--limit`, `-o table\|json` |
238
+
239
+ ### CLI Examples
240
+
241
+ ```bash
242
+ # Get quality metrics for a specific meeting
243
+ wxcli meeting-qualities list --meeting-id "a]b1c2d3e4f5"
244
+
245
+ # Get quality metrics as JSON
246
+ wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json
247
+
248
+ # Limit results
249
+ wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" --max 10
250
+ ```
251
+
252
+ ### Raw HTTP Fallback
253
+
254
+ ```bash
255
+ # Get meeting quality data
256
+ curl -s -H "Authorization: Bearer $TOKEN" \
257
+ "https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6" | jq .
258
+
259
+ # With pagination
260
+ curl -s -H "Authorization: Bearer $TOKEN" \
261
+ "https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6&max=10&offset=0" | jq .
262
+ ```
263
+
264
+ ### API Details
265
+
266
+ | Property | Value |
267
+ |----------|-------|
268
+ | Endpoint | `GET https://webexapis.com/v1/meeting/qualities` |
269
+ | Response key | `items` |
270
+ | Table columns | `id`, `name` (default -- actual response fields may differ) |
271
+
272
+ ### Query Parameters
273
+
274
+ | Parameter | Type | Required | Description |
275
+ |-----------|------|----------|-------------|
276
+ | `meetingId` | string | Yes (effectively) | Unique identifier for the meeting instance |
277
+ | `max` | int | No | Maximum number of media sessions to return |
278
+ | `offset` | int | No | Offset for pagination |
279
+
280
+ ---
281
+
282
+ ## Recipes
283
+
284
+ ### Monitor hybrid connector health across the org
285
+
286
+ List all connectors, then inspect any that show issues.
287
+
288
+ ```bash
289
+ # Step 1: List all connectors
290
+ wxcli hybrid-connectors list -o json | jq '.[] | {id, hostname, status: .status.state}'
291
+
292
+ # Step 2: Get details on a specific connector that looks unhealthy
293
+ wxcli hybrid-connectors show <connector-id> -o json | jq '{hostname, status, version, cluster}'
294
+
295
+ # Step 3: Cross-reference with the parent cluster
296
+ wxcli hybrid-clusters show <cluster-id>
297
+ ```
298
+
299
+ Raw HTTP version (if CLI is unavailable):
300
+
301
+ ```bash
302
+ # List all connectors and filter for non-running states
303
+ curl -s -H "Authorization: Bearer $TOKEN" \
304
+ "https://webexapis.com/v1/hybrid/connectors" | \
305
+ jq '.items[] | select(.status.state != "running") | {id, hostname, state: .status.state}'
306
+ ```
307
+
308
+ ### Pull historical analytics for messaging/meetings/devices
309
+
310
+ Due to the `/v1/v1/` bug in the CLI, use raw HTTP for now.
311
+
312
+ ```bash
313
+ # Messaging activity over the last 30 days
314
+ curl -s -H "Authorization: Bearer $TOKEN" \
315
+ "https://webexapis.com/v1/analytics/messagingMetrics/dailyTotals?from=2026-02-17&to=2026-03-19" | jq .
316
+
317
+ # Room device usage over the last 7 days
318
+ curl -s -H "Authorization: Bearer $TOKEN" \
319
+ "https://webexapis.com/v1/analytics/roomDeviceMetrics/dailyTotals?from=2026-03-12&to=2026-03-19" | jq .
320
+
321
+ # Meeting aggregates for a site
322
+ curl -s -H "Authorization: Bearer $TOKEN" \
323
+ "https://webexapis.com/v1/analytics/meetingsMetrics/aggregates?siteUrl=mysite.webex.com&from=2026-03-01&to=2026-03-19" | jq .
324
+ ```
325
+
326
+ ### Investigate meeting quality issues (jitter, latency, packet loss)
327
+
328
+ You need a `meetingId` to query quality data. Get it from the Meetings API or Control Hub.
329
+
330
+ ```bash
331
+ # Step 1: Get quality metrics for a specific meeting
332
+ wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json
333
+
334
+ # Step 2: Parse the response for quality indicators
335
+ wxcli meeting-qualities list --meeting-id "a1b2c3d4e5f6" -o json | \
336
+ jq '.[] | {participant: .displayName, audioJitter: .mediaQuality.audioJitter, videoPacketLoss: .mediaQuality.videoPacketLoss, latency: .mediaQuality.latency}'
337
+ ```
338
+
339
+ Raw HTTP version:
340
+
341
+ ```bash
342
+ curl -s -H "Authorization: Bearer $TOKEN" \
343
+ "https://webexapis.com/v1/meeting/qualities?meetingId=a1b2c3d4e5f6" | \
344
+ jq '.items[] | {participant: .displayName, audioJitter: .mediaQuality.audioJitter, videoPacketLoss: .mediaQuality.videoPacketLoss}'
345
+ ```
346
+
347
+ ---
348
+
349
+ ## Gotchas
350
+
351
+ ### `live-monitoring create` is a read operation
352
+
353
+ The `create` command name is misleading. The Webex API uses `POST` for this query endpoint (`/v1/livemonitoring/liveMeetingsByCountry`), and the generator maps all POST operations to `create`. The command reads live meeting metrics -- it does not create anything.
354
+
355
+ ### All groups are read-only
356
+
357
+ None of these 5 command groups have write operations. There are no `update`, `delete`, or true `create` commands. The `live-monitoring create` is the only POST, and it is semantically a read (see above).
358
+
359
+ ### Meeting quality requires a specific `meetingId`
360
+
361
+ The `meeting-qualities list` command is effectively useless without `--meeting-id`. Without it, the API may return an error or empty results. You need to obtain the meeting ID from the Meetings API (`wxcli meetings list` or the Control Hub meeting history) before querying quality data.
362
+
363
+ ### CONFIRMED BUG: `analytics` commands have a `/v1/v1/` double-path
364
+
365
+ All three `analytics` commands (`show`, `show-daily-totals`, `show-aggregates`) generate URLs with `/v1/v1/` instead of `/v1/`. This is a generator bug -- the OpenAPI spec paths already include `/v1/`, and the generator prepends the base URL which also ends in `/v1`. The result is a broken double-path like `https://webexapis.com/v1/v1/analytics/messagingMetrics/dailyTotals`.
366
+
367
+ **Impact:** All three commands fail at runtime. Use raw HTTP (curl) as shown in the fallback examples above.
368
+
369
+ **Fix:** tracked as a generator bug; until a fixed release, use the raw HTTP workaround above
370
+
371
+ ### Scope troubleshooting
372
+
373
+ - **`spark-admin:hybrid_clusters_read`** and **`spark-admin:hybrid_connectors_read`** are separate scopes. Having one does not grant the other.
374
+ - **`analytics:read_all`** covers analytics, meeting qualities, and live monitoring. If you get a 403, verify this scope is included in your token and that the authenticated user has admin privileges.
375
+ - Hybrid scopes require the org to have hybrid services deployed. If no hybrid infrastructure exists, the list endpoints return empty results (not an error).
376
+
377
+ ---
378
+
379
+ ## See Also
380
+
381
+ - `docs/reference/reporting-analytics.md` -- CDR feed, report templates, call quality/queue/AA statistics
382
+ - `docs/reference/authentication.md` -- Token types, scopes, OAuth flows
383
+ - `docs/reference/archive/wxcadm-core.md` -- wxcadm org/auth patterns (alternative to raw HTTP; archived historical SDK doc)