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,357 @@
1
+ # Admin: Partner Operations
2
+
3
+ Partner/VAR/MSP multi-tenant management -- customer org management, admin assignment, tagging, and partner-level reporting.
4
+
5
+ **Audience note:** This doc serves partner/VAR/MSP organizations. Most single-org admins will never use these commands. All commands require a partner-level admin token.
6
+
7
+ ## Sources
8
+
9
+ - OpenAPI spec: `specs/webex-admin.json` (tags: Partner Administrators, Partner Tags, Partner Reports Templates)
10
+
11
+ ---
12
+
13
+ ## Required Scopes
14
+
15
+ | Scope | Purpose |
16
+ |-------|---------|
17
+ | `spark-admin:reports_read` | List and retrieve partner reports and templates. |
18
+ | `spark-admin:reports_write` | Create and delete partner reports. |
19
+ | `spark-admin:organizations_read` | Read operations for `partner-admins` and `partner-tags` commands. |
20
+ | `spark-admin:organizations_write` | Write operations for `partner-admins` and `partner-tags` commands. |
21
+ | Partner admin token | Required for `partner-admins` and `partner-tags` commands. These APIs are only accessible to partner-level administrators (VAR/MSP). |
22
+
23
+ **Token requirement:** A standard org admin token will not work. You must authenticate as a partner administrator with access to the partner organization. Service app tokens scoped to a single customer org will also fail.
24
+
25
+ **wxcli multi-org support:** wxcli natively handles partner token org targeting. Run `wxcli configure` to auto-detect your multi-org token and select a target customer org. Use `wxcli switch-org` to change the active org and `wxcli clear-org` to reset. Once configured, `orgId` is injected automatically on all applicable commands — no extra flags required. See `docs/reference/authentication.md` (Partner/Multi-Org Tokens section) for full details.
26
+
27
+ ---
28
+
29
+ ## 1. Partner Admins (`partner-admins`)
30
+
31
+ Manage assignment of partner administrators to customer organizations.
32
+
33
+ ### API Endpoints
34
+
35
+ | Operation | Method | URL |
36
+ |-----------|--------|-----|
37
+ | List customer orgs | GET | `/v1/partner/organizations` |
38
+ | List partner admins for customer | GET | `/v1/partner/organizations/{orgId}/partnerAdmins` |
39
+ | Assign partner admin | POST | `/v1/partner/organizations/{orgId}/partnerAdmin/{personId}/assign` |
40
+ | Unassign partner admin | DELETE | `/v1/partner/organizations/{orgId}/partnerAdmin/{personId}/unassign` |
41
+ | Revoke all partner admin roles | DELETE | `/v1/partner/organizations/partnerAdmin/{personId}` |
42
+
43
+ ### Command Reference
44
+
45
+ | Command | Description | Key Arguments |
46
+ |---------|-------------|---------------|
47
+ | `list` | Get all customers managed by a partner admin | `--managed-by PERSON_ID` |
48
+ | `list-partner-admins` | Get all partner admins assigned to a customer | `ORG_ID` (required) |
49
+ | `create` | Assign partner admin to a customer | `ORG_ID PERSON_ID` (both required) |
50
+ | `delete` | Unassign partner admin from a customer | `ORG_ID PERSON_ID` (both required), `--force` |
51
+ | `delete-partner-admin` | Revoke all partner admin roles for a person | `PERSON_ID` (required), `--force` |
52
+
53
+ ### CLI Examples
54
+
55
+ ```bash
56
+ # List all customer orgs managed by the authenticated partner
57
+ wxcli partner-admins list
58
+
59
+ # List customer orgs managed by a specific partner admin
60
+ wxcli partner-admins list --managed-by Y2lzY29zcGFyazovL3...
61
+
62
+ # List all partner admins assigned to a customer org
63
+ wxcli partner-admins list-partner-admins Y2lzY29zcGFyazovL3VzL09SR...
64
+
65
+ # Assign a partner admin to a customer org
66
+ wxcli partner-admins create Y2lzY29zcGFyazovL3VzL09SR... Y2lzY29zcGFyazovL3VzL1BF...
67
+
68
+ # Unassign a partner admin from a customer (skip confirmation)
69
+ wxcli partner-admins delete Y2lzY29zcGFyazovL3VzL09SR... Y2lzY29zcGFyazovL3VzL1BF... --force
70
+
71
+ # Revoke ALL partner admin roles for a person across all customer orgs
72
+ wxcli partner-admins delete-partner-admin Y2lzY29zcGFyazovL3VzL1BF... --force
73
+ ```
74
+
75
+ ### Raw HTTP Fallback
76
+
77
+ ```bash
78
+ # List customer orgs (optionally filter by managedBy person ID)
79
+ curl -s -H "Authorization: Bearer $TOKEN" \
80
+ "https://webexapis.com/v1/partner/organizations?managedBy=PERSON_ID"
81
+
82
+ # Assign partner admin to customer
83
+ curl -s -X POST -H "Authorization: Bearer $TOKEN" \
84
+ -H "Content-Type: application/json" \
85
+ "https://webexapis.com/v1/partner/organizations/{orgId}/partnerAdmin/{personId}/assign"
86
+
87
+ # Unassign partner admin from customer
88
+ curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
89
+ "https://webexapis.com/v1/partner/organizations/{orgId}/partnerAdmin/{personId}/unassign"
90
+
91
+ # Revoke all partner admin roles for a person
92
+ curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
93
+ "https://webexapis.com/v1/partner/organizations/partnerAdmin/{personId}"
94
+ ```
95
+
96
+ ---
97
+
98
+ ## 2. Partner Tags (`partner-tags`)
99
+
100
+ Tag customer organizations and subscriptions for categorization (region, tier, vertical, etc.). Tags are free-form strings managed at the partner level.
101
+
102
+ **Operational limits:** Maximum tag length is **25 characters**. Maximum tags per organization is **5**.
103
+
104
+ ### API Endpoints
105
+
106
+ | Operation | Method | URL |
107
+ |-----------|--------|-----|
108
+ | List all customer tags | GET | `/v1/partner/tags` |
109
+ | Assign/replace org tags | POST | `/v1/partner/tags/organizations/{orgId}/assignTags` |
110
+ | Get org tags | GET | `/v1/partner/tags/organizations/{orgId}` |
111
+ | Find orgs by tags | GET | `/v1/partner/tags/organizations` |
112
+ | Assign/replace subscription tags | POST | `/v1/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}/assignTags` |
113
+ | Find subscriptions by tags | GET | `/v1/partner/tags/subscriptions` |
114
+ | Get a subscription | GET | `/v1/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}` |
115
+
116
+ ### Command Reference
117
+
118
+ | Command | Description | Key Arguments |
119
+ |---------|-------------|---------------|
120
+ | `show` | Retrieve all customer tags | `--type TYPE` (required) |
121
+ | `create` | Create or replace org tags | `ORG_ID` (required), `--json-body` |
122
+ | `show-organizations-tags` | Get a customer org's tags | `ORG_ID` (required) |
123
+ | `show-organizations-tags-1` | Fetch all customers matching a set of tags | `--tags TAG1,TAG2` (required), `--max N` |
124
+ | `create-assign-tags` | Create or replace subscription tags | `ORG_ID SUBSCRIPTION_ID` (required), `--json-body` |
125
+ | `show-subscriptions-tags` | List subscriptions matching a set of tags | `--tags TAG1,TAG2` (required), `--max N` |
126
+ | `show-subscriptions-organizations` | Fetch a specific subscription | `ORG_ID SUBSCRIPTION_ID` (required) |
127
+
128
+ ### CLI Examples
129
+
130
+ ```bash
131
+ # List all tags of a given type
132
+ wxcli partner-tags show --type organization
133
+
134
+ # Get tags assigned to a specific customer org
135
+ wxcli partner-tags show-organizations-tags Y2lzY29zcGFyazovL3VzL09SR...
136
+
137
+ # Assign tags to a customer org (replaces existing tags)
138
+ wxcli partner-tags create Y2lzY29zcGFyazovL3VzL09SR... \
139
+ --json-body '{"tags": ["region:west", "tier:gold", "vertical:healthcare"]}'
140
+
141
+ # Find all customer orgs with specific tags
142
+ wxcli partner-tags show-organizations-tags-1 --tags "region:west,tier:gold" --max 50
143
+
144
+ # Assign tags to a subscription
145
+ wxcli partner-tags create-assign-tags Y2lzY29zcGFyazovL3VzL09SR... SUB_ID_HERE \
146
+ --json-body '{"tags": ["billing:annual", "support:premium"]}'
147
+
148
+ # Find subscriptions by tags
149
+ wxcli partner-tags show-subscriptions-tags --tags "billing:annual"
150
+
151
+ # Get details of a specific subscription
152
+ wxcli partner-tags show-subscriptions-organizations Y2lzY29zcGFyazovL3VzL09SR... SUB_ID_HERE
153
+ ```
154
+
155
+ ### Raw HTTP Fallback
156
+
157
+ ```bash
158
+ # List all customer tags of a type
159
+ curl -s -H "Authorization: Bearer $TOKEN" \
160
+ "https://webexapis.com/v1/partner/tags?type=organization"
161
+
162
+ # Assign tags to a customer org
163
+ curl -s -X POST -H "Authorization: Bearer $TOKEN" \
164
+ -H "Content-Type: application/json" \
165
+ -d '{"tags": ["region:west", "tier:gold"]}' \
166
+ "https://webexapis.com/v1/partner/tags/organizations/{orgId}/assignTags"
167
+
168
+ # Find orgs by tags (comma-separated)
169
+ curl -s -H "Authorization: Bearer $TOKEN" \
170
+ "https://webexapis.com/v1/partner/tags/organizations?tags=region:west,tier:gold&max=50"
171
+
172
+ # Assign tags to a subscription
173
+ curl -s -X POST -H "Authorization: Bearer $TOKEN" \
174
+ -H "Content-Type: application/json" \
175
+ -d '{"tags": ["billing:annual"]}' \
176
+ "https://webexapis.com/v1/partner/tags/organizations/{orgId}/subscriptions/{subscriptionId}/assignTags"
177
+ ```
178
+
179
+ ---
180
+
181
+ ## 3. Partner Reports (`partner-reports`)
182
+
183
+ Generate and manage reports across all customer organizations from the partner level. Uses a template-based system: list available templates, create a report from a template with a date range, then retrieve results.
184
+
185
+ ### API Endpoints
186
+
187
+ | Operation | Method | URL |
188
+ |-----------|--------|-----|
189
+ | List reports | GET | `/v1/partner/reports` |
190
+ | Create a report | POST | `/v1/partner/reports` |
191
+ | Get report details | GET | `/v1/partner/reports/{reportId}` |
192
+ | Delete a report | DELETE | `/v1/partner/reports/{reportId}` |
193
+ | List report templates | GET | `/v1/partner/reports/templates` |
194
+
195
+ ### Command Reference
196
+
197
+ | Command | Description | Key Arguments |
198
+ |---------|-------------|---------------|
199
+ | `list` | List reports | `--service`, `--template-id`, `--from DATE`, `--to DATE`, `--region-id`, `--on-behalf-of-sub-partner-org-id` |
200
+ | `create` | Create a report | `--template-id` (required), `--start-date` (required), `--end-date` (required), `--region-id` |
201
+ | `show` | Get report details | `REPORT_ID` (required) |
202
+ | `delete` | Delete a report | `REPORT_ID` (required), `--force` |
203
+ | `list-templates` | List available report templates | `--on-behalf-of-sub-partner-org-id` |
204
+
205
+ ### CLI Examples
206
+
207
+ ```bash
208
+ # List available partner report templates
209
+ wxcli partner-reports list-templates
210
+
211
+ # List templates on behalf of a sub-partner
212
+ wxcli partner-reports list-templates --on-behalf-of-sub-partner-org-id Y2lzY29zcGFyazovL3Vz...
213
+
214
+ # Create a report from a template
215
+ wxcli partner-reports create \
216
+ --template-id TEMPLATE_ID \
217
+ --start-date 2026-01-01 \
218
+ --end-date 2026-01-31
219
+
220
+ # Create a report scoped to a region
221
+ wxcli partner-reports create \
222
+ --template-id TEMPLATE_ID \
223
+ --start-date 2026-01-01 \
224
+ --end-date 2026-01-31 \
225
+ --region-id us-east
226
+
227
+ # List all reports
228
+ wxcli partner-reports list
229
+
230
+ # List reports filtered by service and date range
231
+ wxcli partner-reports list --service calling --from 2026-01-01 --to 2026-02-01
232
+
233
+ # Get report details (includes download URL when complete)
234
+ wxcli partner-reports show REPORT_ID
235
+
236
+ # Delete a report
237
+ wxcli partner-reports delete REPORT_ID --force
238
+ ```
239
+
240
+ ### Raw HTTP Fallback
241
+
242
+ ```bash
243
+ # List report templates
244
+ curl -s -H "Authorization: Bearer $TOKEN" \
245
+ "https://webexapis.com/v1/partner/reports/templates"
246
+
247
+ # Create a report
248
+ curl -s -X POST -H "Authorization: Bearer $TOKEN" \
249
+ -H "Content-Type: application/json" \
250
+ -d '{"templateId": "TEMPLATE_ID", "startDate": "2026-01-01", "endDate": "2026-01-31"}' \
251
+ "https://webexapis.com/v1/partner/reports"
252
+
253
+ # Get report details
254
+ curl -s -H "Authorization: Bearer $TOKEN" \
255
+ "https://webexapis.com/v1/partner/reports/{reportId}"
256
+
257
+ # List reports with filters
258
+ curl -s -H "Authorization: Bearer $TOKEN" \
259
+ "https://webexapis.com/v1/partner/reports?service=calling&from=2026-01-01&to=2026-02-01"
260
+
261
+ # Delete a report
262
+ curl -s -X DELETE -H "Authorization: Bearer $TOKEN" \
263
+ "https://webexapis.com/v1/partner/reports/{reportId}"
264
+ ```
265
+
266
+ ### Response Keys
267
+
268
+ The `list` command extracts items from the `Report Attributes` key in the API response. The `list-templates` command extracts from the `Template Collection` key. Use `-o json` to see the full raw response if the table output is empty.
269
+
270
+ ---
271
+
272
+ ## Recipes
273
+
274
+ ### List all customer orgs managed by this partner
275
+
276
+ ```bash
277
+ # Get all customer orgs (paginated, default table output)
278
+ wxcli partner-admins list -o json
279
+
280
+ # Get orgs managed by a specific partner admin
281
+ wxcli partner-admins list --managed-by PARTNER_ADMIN_PERSON_ID -o json
282
+ ```
283
+
284
+ ### Assign a partner admin to a new customer org
285
+
286
+ ```bash
287
+ # 1. Get the partner admin's person ID (from partner org's people list)
288
+ wxcli people list --display-name "Jane Partner" -o json
289
+
290
+ # 2. Assign them to the customer org
291
+ wxcli partner-admins create CUSTOMER_ORG_ID PARTNER_ADMIN_PERSON_ID
292
+
293
+ # 3. Verify the assignment
294
+ wxcli partner-admins list-partner-admins CUSTOMER_ORG_ID
295
+ ```
296
+
297
+ ### Tag customers by region and tier
298
+
299
+ ```bash
300
+ # Tag customer orgs for portfolio management
301
+ wxcli partner-tags create ORG_ID_WEST_1 \
302
+ --json-body '{"tags": ["region:west", "tier:gold", "vertical:finance"]}'
303
+
304
+ wxcli partner-tags create ORG_ID_EAST_1 \
305
+ --json-body '{"tags": ["region:east", "tier:silver", "vertical:retail"]}'
306
+
307
+ # Find all gold-tier customers
308
+ wxcli partner-tags show-organizations-tags-1 --tags "tier:gold"
309
+
310
+ # Find all west-region finance customers
311
+ wxcli partner-tags show-organizations-tags-1 --tags "region:west,vertical:finance"
312
+ ```
313
+
314
+ ### Generate a partner-level report
315
+
316
+ ```bash
317
+ # 1. List available templates to find the right one
318
+ wxcli partner-reports list-templates -o json
319
+
320
+ # 2. Create a monthly report
321
+ wxcli partner-reports create \
322
+ --template-id TEMPLATE_ID \
323
+ --start-date 2026-02-01 \
324
+ --end-date 2026-03-01
325
+
326
+ # 3. Check report status (reports are generated asynchronously)
327
+ wxcli partner-reports show REPORT_ID
328
+
329
+ # 4. When status shows complete, the response includes a download URL
330
+ ```
331
+
332
+ ---
333
+
334
+ ## Gotchas
335
+
336
+ 1. **Partner-level token required.** All three command groups (`partner-admins`, `partner-tags`, `partner-reports`) require authentication as a partner administrator. A standard org admin token or a service app token scoped to a single org will return 403 or 401 errors.
337
+
338
+ 2. **`show-organizations-tags-1` is a generator artifact.** The `-1` suffix exists because the OpenAPI spec has two endpoints on `/v1/partner/tags/organizations` -- one for getting a specific org's tags (by path parameter) and one for querying orgs by tags (by query parameter). The generator disambiguated them with the `-1` suffix. The command works correctly despite the awkward name.
339
+
340
+ 3. **`show-subscriptions-organizations` name is misleading.** Despite the name, this command fetches a single subscription's details (given an org ID and subscription ID), not a list of organizations. The name comes from the URL path structure `/organizations/{orgId}/subscriptions/{subscriptionId}`.
341
+
342
+ 4. **Tag create commands replace, not append.** Both `partner-tags create` and `partner-tags create-assign-tags` replace all existing tags with the provided list. To add a tag, you must first read the current tags, add the new one to the list, and write the full set back. Passing an empty array (`[]`) removes all tags from the org. Once a tag is unassigned from its last customer org, it is automatically removed from the API listing.
343
+
344
+ 5. **`partner-reports` vs `reports`.** The `partner-reports` group (at `/v1/partner/reports`) is for partner-level cross-org reporting. The separate `reports` group (at `/v1/reports`) is for single-org reports. They use different API endpoints, different templates, and different scopes. Do not confuse them.
345
+
346
+ 6. **Report generation is asynchronous.** After `partner-reports create`, the report is queued for generation. Poll with `partner-reports show REPORT_ID` until the status indicates completion. The completed response includes a download URL for the CSV/report file.
347
+
348
+ 7. **Response key extraction.** The `partner-reports list` command looks for results under the `Report Attributes` key, and `list-templates` looks under `Template Collection`. If the API changes these keys, the table output will appear empty. Use `-o json` to see the raw response.
349
+
350
+ 8. **`--type` parameter on `partner-tags show`.** This parameter is required but the valid values are not enumerated in the OpenAPI spec. The spec provides `ORGANIZATION` (uppercase) as the example value. The endpoint requires partner admin privileges — a standard org admin token gets 403 Forbidden for all values tested (`ORGANIZATION`, `SUBSCRIPTION`, `organization`). Both `ORGANIZATION` and `SUBSCRIPTION` are confirmed valid type values per the live API reference. <!-- Partially verified via live API 2026-03-19: all values return 403 with org admin token (partner admin required). No 400 "invalid type" error observed for ORGANIZATION or SUBSCRIPTION. -->
351
+
352
+ ---
353
+
354
+ ## See Also
355
+
356
+ - [reporting-analytics.md](reporting-analytics.md) -- For org-level report templates, CDR, call quality, and queue/AA statistics (single-org scope).
357
+ - [authentication.md](authentication.md) -- Auth methods, token types, and scopes.