wxcli 1.4.0__tar.gz → 1.4.2__tar.gz

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 (814) hide show
  1. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/agents/wxc-calling-builder.md +0 -6
  2. {wxcli-1.4.0/src/wxcli/_playbook/.codex → wxcli-1.4.2/.claude}/skills/configure-features/SKILL.md +2 -2
  3. {wxcli-1.4.0/src/wxcli/_playbook → wxcli-1.4.2}/.claude/skills/cucm-migrate/SKILL.md +1 -1
  4. {wxcli-1.4.0/src/wxcli/_playbook → wxcli-1.4.2}/.claude/skills/manage-licensing/SKILL.md +1 -12
  5. {wxcli-1.4.0 → wxcli-1.4.2}/.github/workflows/ci.yml +24 -0
  6. {wxcli-1.4.0 → wxcli-1.4.2}/PKG-INFO +1 -1
  7. {wxcli-1.4.0/src/wxcli/_playbook → wxcli-1.4.2}/docs/reference/contact-center-routing.md +7 -3
  8. {wxcli-1.4.0/src/wxcli/_playbook → wxcli-1.4.2}/docs/reference/meetings-core.md +3 -1
  9. {wxcli-1.4.0/src/wxcli/_playbook → wxcli-1.4.2}/docs/reference/messaging-spaces.md +1 -1
  10. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/agents/wxc-calling-builder.md +0 -6
  11. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/configure-features/SKILL.md +2 -2
  12. {wxcli-1.4.0/src/wxcli/_playbook/.codex → wxcli-1.4.2/src/wxcli/_playbook/.claude}/skills/cucm-migrate/SKILL.md +1 -1
  13. {wxcli-1.4.0 → wxcli-1.4.2/src/wxcli/_playbook}/.claude/skills/manage-licensing/SKILL.md +1 -12
  14. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/agents/wxc-calling-builder.toml +0 -6
  15. {wxcli-1.4.0/.claude → wxcli-1.4.2/src/wxcli/_playbook/.codex}/skills/configure-features/SKILL.md +2 -2
  16. {wxcli-1.4.0/.claude → wxcli-1.4.2/src/wxcli/_playbook/.codex}/skills/cucm-migrate/SKILL.md +1 -1
  17. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/manage-licensing/SKILL.md +1 -12
  18. {wxcli-1.4.0 → wxcli-1.4.2/src/wxcli/_playbook}/docs/reference/contact-center-routing.md +7 -3
  19. {wxcli-1.4.0 → wxcli-1.4.2/src/wxcli/_playbook}/docs/reference/meetings-core.md +3 -1
  20. {wxcli-1.4.0 → wxcli-1.4.2/src/wxcli/_playbook}/docs/reference/messaging-spaces.md +1 -1
  21. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_version.py +3 -3
  22. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/auth.py +8 -2
  23. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/admin_recordings.py +12 -1
  24. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_queue.py +26 -2
  25. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_flow.py +2 -2
  26. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/converged_recordings.py +12 -1
  27. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/dect_devices.py +13 -1
  28. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/device_settings.py +10 -1
  29. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_transcripts.py +12 -1
  30. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/numbers.py +10 -1
  31. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/preflight/runner.py +1 -1
  32. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/PKG-INFO +1 -1
  33. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/scm_version.json +2 -2
  34. {wxcli-1.4.0 → wxcli-1.4.2}/tools/CLAUDE.md +36 -10
  35. {wxcli-1.4.0 → wxcli-1.4.2}/tools/command_renderer.py +54 -1
  36. {wxcli-1.4.0 → wxcli-1.4.2}/tools/drift_check.py +51 -2
  37. {wxcli-1.4.0 → wxcli-1.4.2}/tools/drift_check_allowlist.txt +32 -0
  38. {wxcli-1.4.0 → wxcli-1.4.2}/tools/field_overrides.yaml +17 -0
  39. {wxcli-1.4.0 → wxcli-1.4.2}/tools/generate_commands.py +46 -3
  40. {wxcli-1.4.0 → wxcli-1.4.2}/tools/openapi_parser.py +27 -3
  41. {wxcli-1.4.0 → wxcli-1.4.2}/tools/spec_sync.py +3 -1
  42. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/agents/migration-advisor.md +0 -0
  43. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/projects/-Users-ahobgood-Documents-webexCalling/memory/feedback_help_gate_for_skills.md +0 -0
  44. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/rules/cleanup.md +0 -0
  45. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/rules/cucm-migration.md +0 -0
  46. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/rules/org-health.md +0 -0
  47. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/settings.json +0 -0
  48. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/audit-compliance/SKILL.md +0 -0
  49. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/call-control/SKILL.md +0 -0
  50. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/configure-routing/SKILL.md +0 -0
  51. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/contact-center/SKILL.md +0 -0
  52. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/customer-assist/SKILL.md +0 -0
  53. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/device-platform/SKILL.md +0 -0
  54. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/manage-call-settings/SKILL.md +0 -0
  55. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/manage-devices/SKILL.md +0 -0
  56. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/manage-identity/SKILL.md +0 -0
  57. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/manage-meetings/SKILL.md +0 -0
  58. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/messaging-bots/SKILL.md +0 -0
  59. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/messaging-spaces/SKILL.md +0 -0
  60. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/org-health/SKILL.md +0 -0
  61. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/provision-calling/SKILL.md +0 -0
  62. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/SKILL.md +0 -0
  63. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
  64. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/call-history.md +0 -0
  65. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/features.md +0 -0
  66. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/numbers.md +0 -0
  67. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/people-and-settings.md +0 -0
  68. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/query-live/domains/routing.md +0 -0
  69. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/reporting/SKILL.md +0 -0
  70. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/reporting/references/cdr-recipes.md +0 -0
  71. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/reporting-cc/SKILL.md +0 -0
  72. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/reporting-meetings/SKILL.md +0 -0
  73. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/teardown/SKILL.md +0 -0
  74. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/video-mesh/SKILL.md +0 -0
  75. {wxcli-1.4.0 → wxcli-1.4.2}/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
  76. {wxcli-1.4.0 → wxcli-1.4.2}/.github/workflows/release.yml +0 -0
  77. {wxcli-1.4.0 → wxcli-1.4.2}/.gitignore +0 -0
  78. {wxcli-1.4.0 → wxcli-1.4.2}/CLAUDE.md +0 -0
  79. {wxcli-1.4.0 → wxcli-1.4.2}/LICENSE +0 -0
  80. {wxcli-1.4.0 → wxcli-1.4.2}/README.md +0 -0
  81. {wxcli-1.4.0 → wxcli-1.4.2}/TODO.md +0 -0
  82. {wxcli-1.4.0 → wxcli-1.4.2}/docs/CLAUDE.md +0 -0
  83. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/00-index.md +0 -0
  84. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/01-structural-map.md +0 -0
  85. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/02-decisions.md +0 -0
  86. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/03-behavior.md +0 -0
  87. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/04-operations-and-evolution.md +0 -0
  88. {wxcli-1.4.0 → wxcli-1.4.2}/docs/architecture/05-purpose.md +0 -0
  89. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-css-routing.md +0 -0
  90. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-device-migration.md +0 -0
  91. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-feature-mapping.md +0 -0
  92. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-identity-numbering.md +0 -0
  93. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-location-design.md +0 -0
  94. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-trunk-pstn.md +0 -0
  95. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-user-settings.md +0 -0
  96. {wxcli-1.4.0 → wxcli-1.4.2}/docs/knowledge-base/migration/kb-webex-limits.md +0 -0
  97. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/CLAUDE.md +0 -0
  98. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/TODO.md +0 -0
  99. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-apps-data.md +0 -0
  100. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-audit-security.md +0 -0
  101. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-hybrid.md +0 -0
  102. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-identity-scim.md +0 -0
  103. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-licensing.md +0 -0
  104. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-org-management.md +0 -0
  105. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/admin-partner.md +0 -0
  106. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxc-sdk-patterns.md +0 -0
  107. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-advanced.md +0 -0
  108. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-core.md +0 -0
  109. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
  110. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-features.md +0 -0
  111. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-locations.md +0 -0
  112. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-person.md +0 -0
  113. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/archive/wxcadm-routing.md +0 -0
  114. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/authentication.md +0 -0
  115. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/call-control.md +0 -0
  116. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/call-features-additional.md +0 -0
  117. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/call-features-major.md +0 -0
  118. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/call-routing.md +0 -0
  119. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/contact-center-analytics.md +0 -0
  120. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/contact-center-core.md +0 -0
  121. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/contact-center-journey.md +0 -0
  122. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/devices-core.md +0 -0
  123. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/devices-dect.md +0 -0
  124. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/devices-platform.md +0 -0
  125. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/devices-workspaces.md +0 -0
  126. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/emergency-services.md +0 -0
  127. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/location-calling-core.md +0 -0
  128. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/location-calling-media.md +0 -0
  129. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/location-recording-advanced.md +0 -0
  130. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/meetings-content.md +0 -0
  131. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/meetings-infrastructure.md +0 -0
  132. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/meetings-settings.md +0 -0
  133. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/messaging-bots.md +0 -0
  134. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/migration-spec-template.md +0 -0
  135. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/person-call-settings-behavior.md +0 -0
  136. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/person-call-settings-handling.md +0 -0
  137. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/person-call-settings-media.md +0 -0
  138. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/person-call-settings-permissions.md +0 -0
  139. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/provisioning.md +0 -0
  140. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/reporting-analytics.md +0 -0
  141. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/self-service-call-settings.md +0 -0
  142. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/virtual-lines.md +0 -0
  143. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/webhooks-events.md +0 -0
  144. {wxcli-1.4.0 → wxcli-1.4.2}/docs/reference/wxcadm-xsi-realtime.md +0 -0
  145. {wxcli-1.4.0 → wxcli-1.4.2}/docs/runbooks/cucm-migration/decision-guide.md +0 -0
  146. {wxcli-1.4.0 → wxcli-1.4.2}/docs/runbooks/cucm-migration/operator-runbook.md +0 -0
  147. {wxcli-1.4.0 → wxcli-1.4.2}/docs/runbooks/cucm-migration/self-review-findings.md +0 -0
  148. {wxcli-1.4.0 → wxcli-1.4.2}/docs/runbooks/cucm-migration/tuning-reference.md +0 -0
  149. {wxcli-1.4.0 → wxcli-1.4.2}/docs/templates/deployment-plan.md +0 -0
  150. {wxcli-1.4.0 → wxcli-1.4.2}/docs/templates/execution-report.md +0 -0
  151. {wxcli-1.4.0 → wxcli-1.4.2}/pyproject.toml +0 -0
  152. {wxcli-1.4.0 → wxcli-1.4.2}/setup.cfg +0 -0
  153. {wxcli-1.4.0 → wxcli-1.4.2}/specs/overlays/webex-cloud-calling.overlay.json +0 -0
  154. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-admin.json +0 -0
  155. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-broadworks.json +0 -0
  156. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-cloud-calling.json +0 -0
  157. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-contact-center.json +0 -0
  158. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-device.json +0 -0
  159. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-meetings.json +0 -0
  160. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-messaging.json +0 -0
  161. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-ucm.json +0 -0
  162. {wxcli-1.4.0 → wxcli-1.4.2}/specs/webex-wholesale.json +0 -0
  163. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/__init__.py +0 -0
  164. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/agents/migration-advisor.md +0 -0
  165. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/rules/cleanup.md +0 -0
  166. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/rules/cucm-migration.md +0 -0
  167. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/rules/org-health.md +0 -0
  168. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/settings.json +0 -0
  169. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +0 -0
  170. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/call-control/SKILL.md +0 -0
  171. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +0 -0
  172. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/contact-center/SKILL.md +0 -0
  173. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +0 -0
  174. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/device-platform/SKILL.md +0 -0
  175. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +0 -0
  176. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +0 -0
  177. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +0 -0
  178. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +0 -0
  179. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +0 -0
  180. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +0 -0
  181. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/org-health/SKILL.md +0 -0
  182. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +0 -0
  183. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/SKILL.md +0 -0
  184. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +0 -0
  185. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +0 -0
  186. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/features.md +0 -0
  187. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +0 -0
  188. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +0 -0
  189. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/query-live/domains/routing.md +0 -0
  190. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/reporting/SKILL.md +0 -0
  191. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +0 -0
  192. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +0 -0
  193. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +0 -0
  194. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/teardown/SKILL.md +0 -0
  195. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +0 -0
  196. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +0 -0
  197. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/agents/migration-advisor.toml +0 -0
  198. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/config.toml +0 -0
  199. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/rules/cleanup.md +0 -0
  200. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/rules/cucm-migration.md +0 -0
  201. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/rules/org-health.md +0 -0
  202. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/audit-compliance/SKILL.md +0 -0
  203. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/call-control/SKILL.md +0 -0
  204. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/configure-routing/SKILL.md +0 -0
  205. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/contact-center/SKILL.md +0 -0
  206. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/customer-assist/SKILL.md +0 -0
  207. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/device-platform/SKILL.md +0 -0
  208. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/manage-call-settings/SKILL.md +0 -0
  209. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/manage-devices/SKILL.md +0 -0
  210. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/manage-identity/SKILL.md +0 -0
  211. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/manage-meetings/SKILL.md +0 -0
  212. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/messaging-bots/SKILL.md +0 -0
  213. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/messaging-spaces/SKILL.md +0 -0
  214. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/org-health/SKILL.md +0 -0
  215. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/provision-calling/SKILL.md +0 -0
  216. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/SKILL.md +0 -0
  217. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-flow-trace.md +0 -0
  218. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/call-history.md +0 -0
  219. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/features.md +0 -0
  220. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/numbers.md +0 -0
  221. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/people-and-settings.md +0 -0
  222. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/query-live/domains/routing.md +0 -0
  223. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/reporting/SKILL.md +0 -0
  224. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/reporting/references/cdr-recipes.md +0 -0
  225. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/reporting-cc/SKILL.md +0 -0
  226. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/reporting-meetings/SKILL.md +0 -0
  227. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/teardown/SKILL.md +0 -0
  228. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/video-mesh/SKILL.md +0 -0
  229. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/.codex/skills/wxc-calling-debug/SKILL.md +0 -0
  230. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/AGENTS.md +0 -0
  231. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/CLAUDE.md +0 -0
  232. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-css-routing.md +0 -0
  233. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-device-migration.md +0 -0
  234. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-feature-mapping.md +0 -0
  235. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-identity-numbering.md +0 -0
  236. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-location-design.md +0 -0
  237. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-trunk-pstn.md +0 -0
  238. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-user-settings.md +0 -0
  239. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/knowledge-base/migration/kb-webex-limits.md +0 -0
  240. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/CLAUDE.md +0 -0
  241. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-apps-data.md +0 -0
  242. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-audit-security.md +0 -0
  243. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-hybrid.md +0 -0
  244. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-identity-scim.md +0 -0
  245. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-licensing.md +0 -0
  246. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-org-management.md +0 -0
  247. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/admin-partner.md +0 -0
  248. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +0 -0
  249. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +0 -0
  250. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-core.md +0 -0
  251. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +0 -0
  252. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-features.md +0 -0
  253. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +0 -0
  254. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-person.md +0 -0
  255. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +0 -0
  256. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/authentication.md +0 -0
  257. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/call-control.md +0 -0
  258. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/call-features-additional.md +0 -0
  259. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/call-features-major.md +0 -0
  260. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/call-routing.md +0 -0
  261. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/contact-center-analytics.md +0 -0
  262. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/contact-center-core.md +0 -0
  263. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/contact-center-journey.md +0 -0
  264. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/devices-core.md +0 -0
  265. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/devices-dect.md +0 -0
  266. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/devices-platform.md +0 -0
  267. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/devices-workspaces.md +0 -0
  268. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/emergency-services.md +0 -0
  269. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/location-calling-core.md +0 -0
  270. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/location-calling-media.md +0 -0
  271. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/location-recording-advanced.md +0 -0
  272. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/meetings-content.md +0 -0
  273. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/meetings-infrastructure.md +0 -0
  274. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/meetings-settings.md +0 -0
  275. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/messaging-bots.md +0 -0
  276. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/person-call-settings-behavior.md +0 -0
  277. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/person-call-settings-handling.md +0 -0
  278. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/person-call-settings-media.md +0 -0
  279. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/person-call-settings-permissions.md +0 -0
  280. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/provisioning.md +0 -0
  281. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/reporting-analytics.md +0 -0
  282. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/self-service-call-settings.md +0 -0
  283. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/virtual-lines.md +0 -0
  284. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/webhooks-events.md +0 -0
  285. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +0 -0
  286. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/runbooks/cucm-migration/decision-guide.md +0 -0
  287. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/runbooks/cucm-migration/operator-runbook.md +0 -0
  288. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/_playbook/docs/runbooks/cucm-migration/tuning-reference.md +0 -0
  289. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/__init__.py +0 -0
  290. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/_registry.py +0 -0
  291. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/activation_email.py +0 -0
  292. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/analytics.py +0 -0
  293. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/announcement_playlists.py +0 -0
  294. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/announcements.py +0 -0
  295. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/archive_users.py +0 -0
  296. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/attachment_actions.py +0 -0
  297. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/audit_events.py +0 -0
  298. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/authorizations.py +0 -0
  299. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/auto_attendant.py +0 -0
  300. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/broadworks_billing_reports.py +0 -0
  301. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/broadworks_enterprises.py +0 -0
  302. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/broadworks_subscribers.py +0 -0
  303. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/broadworks_workspaces.py +0 -0
  304. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_controls.py +0 -0
  305. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_park.py +0 -0
  306. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_pickup.py +0 -0
  307. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_recording.py +0 -0
  308. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_routing.py +0 -0
  309. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/call_settings_for_me_phase_5.py +0 -0
  310. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/caller_reputation.py +0 -0
  311. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/calling_service.py +0 -0
  312. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_address_book.py +0 -0
  313. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_agent_greetings.py +0 -0
  314. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_agent_summaries.py +0 -0
  315. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_agent_wellbeing.py +0 -0
  316. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_agents.py +0 -0
  317. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_ai_assistant.py +0 -0
  318. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_ai_feature.py +0 -0
  319. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_audio_files.py +0 -0
  320. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_auto_csat.py +0 -0
  321. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_aux_code.py +0 -0
  322. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_business_hour.py +0 -0
  323. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_call_monitoring.py +0 -0
  324. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_callbacks.py +0 -0
  325. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_campaign.py +0 -0
  326. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_captures.py +0 -0
  327. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_contact_list.py +0 -0
  328. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_contact_number.py +0 -0
  329. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_data_sources.py +0 -0
  330. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_desktop_layout.py +0 -0
  331. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_desktop_profile.py +0 -0
  332. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_dial_number.py +0 -0
  333. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_dial_plan.py +0 -0
  334. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_dnc.py +0 -0
  335. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_entry_point.py +0 -0
  336. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_ewt.py +0 -0
  337. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_global_vars.py +0 -0
  338. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_holiday_list.py +0 -0
  339. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_journey.py +0 -0
  340. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_legacy_flows.py +0 -0
  341. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_multimedia_profile.py +0 -0
  342. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_notification.py +0 -0
  343. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_outdial_ani.py +0 -0
  344. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_overrides.py +0 -0
  345. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_queue.py +0 -0
  346. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_queue_stats.py +0 -0
  347. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_realtime.py +0 -0
  348. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_resource_collection.py +0 -0
  349. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_search.py +0 -0
  350. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_site.py +0 -0
  351. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_skill.py +0 -0
  352. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_skill_profile.py +0 -0
  353. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_subscriptions.py +0 -0
  354. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_summaries.py +0 -0
  355. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_tasks.py +0 -0
  356. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_team.py +0 -0
  357. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_user_profiles.py +0 -0
  358. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_users.py +0 -0
  359. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cc_work_types.py +0 -0
  360. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cdr.py +0 -0
  361. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/classifications.py +0 -0
  362. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cleanup.py +0 -0
  363. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/client_settings.py +0 -0
  364. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/conference.py +0 -0
  365. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/configure.py +0 -0
  366. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/converged_recordings_export.py +0 -0
  367. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cq_playlists.py +0 -0
  368. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cucm.py +0 -0
  369. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/cucm_config.py +0 -0
  370. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/customer_assist.py +0 -0
  371. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/data_sources.py +0 -0
  372. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/device_configurations.py +0 -0
  373. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/device_dynamic_settings.py +0 -0
  374. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/devices.py +0 -0
  375. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/domains.py +0 -0
  376. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/ecm.py +0 -0
  377. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/emergency_services.py +0 -0
  378. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/events.py +0 -0
  379. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/external_voicemail.py +0 -0
  380. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/groups.py +0 -0
  381. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/guest_management.py +0 -0
  382. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hds.py +0 -0
  383. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hot_desk.py +0 -0
  384. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hot_desking_members.py +0 -0
  385. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hot_desking_portal.py +0 -0
  386. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hunt_group.py +0 -0
  387. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hybrid_clusters.py +0 -0
  388. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/hybrid_connectors.py +0 -0
  389. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/identity_org.py +0 -0
  390. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/init_playbook.py +0 -0
  391. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/licenses.py +0 -0
  392. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/live_monitoring.py +0 -0
  393. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/location_call_handling.py +0 -0
  394. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/location_schedules.py +0 -0
  395. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/location_settings.py +0 -0
  396. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/location_voicemail.py +0 -0
  397. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/locations.py +0 -0
  398. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_captions.py +0 -0
  399. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_chats.py +0 -0
  400. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_invitees.py +0 -0
  401. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_messages.py +0 -0
  402. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_participants.py +0 -0
  403. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_polls.py +0 -0
  404. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_preferences.py +0 -0
  405. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_qa.py +0 -0
  406. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_qualities.py +0 -0
  407. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_reports.py +0 -0
  408. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_session_types.py +0 -0
  409. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_site.py +0 -0
  410. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_slido.py +0 -0
  411. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_summaries.py +0 -0
  412. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meeting_tracking_codes.py +0 -0
  413. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/meetings.py +0 -0
  414. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/memberships.py +0 -0
  415. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/messages.py +0 -0
  416. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/mode_management.py +0 -0
  417. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/my_call_settings.py +0 -0
  418. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/operating_modes.py +0 -0
  419. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/org_contacts.py +0 -0
  420. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/org_health_cli.py +0 -0
  421. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/org_settings.py +0 -0
  422. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/organizations.py +0 -0
  423. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/paging_group.py +0 -0
  424. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/partner_admins.py +0 -0
  425. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/partner_reports.py +0 -0
  426. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/partner_tags.py +0 -0
  427. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/people.py +0 -0
  428. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/person_call_settings.py +0 -0
  429. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/pstn.py +0 -0
  430. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/recording_report.py +0 -0
  431. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/report_templates.py +0 -0
  432. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/reports.py +0 -0
  433. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/resource_group_memberships.py +0 -0
  434. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/resource_groups.py +0 -0
  435. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/roles.py +0 -0
  436. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/room_tabs.py +0 -0
  437. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/rooms.py +0 -0
  438. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/scim_bulk.py +0 -0
  439. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/scim_groups.py +0 -0
  440. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/scim_schemas.py +0 -0
  441. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/scim_users.py +0 -0
  442. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/security_audit.py +0 -0
  443. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/service_apps.py +0 -0
  444. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/single_number_reach.py +0 -0
  445. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/team_memberships.py +0 -0
  446. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/teams.py +0 -0
  447. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/ucm_profile.py +0 -0
  448. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/update.py +0 -0
  449. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/user_settings.py +0 -0
  450. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/video_mesh.py +0 -0
  451. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/virtual_extensions.py +0 -0
  452. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/virtual_line_settings.py +0 -0
  453. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/webhooks.py +0 -0
  454. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/wholesale_billing_reports.py +0 -0
  455. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/wholesale_provisioning.py +0 -0
  456. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/workspace_locations.py +0 -0
  457. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/workspace_metrics.py +0 -0
  458. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/workspace_personalization.py +0 -0
  459. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/workspace_settings.py +0 -0
  460. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/workspaces.py +0 -0
  461. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/commands/xapi.py +0 -0
  462. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/config.py +0 -0
  463. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/errors.py +0 -0
  464. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/main.py +0 -0
  465. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/CLAUDE.md +0 -0
  466. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/__init__.py +0 -0
  467. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/advisory/CLAUDE.md +0 -0
  468. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/advisory/__init__.py +0 -0
  469. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/advisory/advisor.py +0 -0
  470. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/advisory/advisory_patterns.py +0 -0
  471. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/advisory/recommendation_rules.py +0 -0
  472. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/CLAUDE.md +0 -0
  473. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/__init__.py +0 -0
  474. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/connection.py +0 -0
  475. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/discovery.py +0 -0
  476. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/__init__.py +0 -0
  477. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/announcements.py +0 -0
  478. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/base.py +0 -0
  479. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/device_profiles.py +0 -0
  480. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/devices.py +0 -0
  481. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/e911.py +0 -0
  482. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/features.py +0 -0
  483. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/helpers.py +0 -0
  484. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/informational.py +0 -0
  485. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/locations.py +0 -0
  486. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/moh.py +0 -0
  487. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/remote_destinations.py +0 -0
  488. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/routing.py +0 -0
  489. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/shared_lines.py +0 -0
  490. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/templates.py +0 -0
  491. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/tier4.py +0 -0
  492. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/users.py +0 -0
  493. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/voicemail.py +0 -0
  494. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/extractors/workspaces.py +0 -0
  495. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/cucm/unity_connection.py +0 -0
  496. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/CLAUDE.md +0 -0
  497. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/__init__.py +0 -0
  498. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/batch.py +0 -0
  499. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/dependency.py +0 -0
  500. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/engine.py +0 -0
  501. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/handlers.py +0 -0
  502. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/planner.py +0 -0
  503. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/execute/runtime.py +0 -0
  504. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/export/CLAUDE.md +0 -0
  505. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/export/__init__.py +0 -0
  506. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/export/csv_export.py +0 -0
  507. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/export/deployment_plan.py +0 -0
  508. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/export/json_export.py +0 -0
  509. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/models.py +0 -0
  510. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/phone_models.py +0 -0
  511. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/preflight/CLAUDE.md +0 -0
  512. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/preflight/__init__.py +0 -0
  513. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/preflight/checks.py +0 -0
  514. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/rate_limiter.py +0 -0
  515. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/CLAUDE.md +0 -0
  516. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/__init__.py +0 -0
  517. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/appendix.py +0 -0
  518. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/assembler.py +0 -0
  519. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/charts.py +0 -0
  520. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/executive.py +0 -0
  521. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/explainer.py +0 -0
  522. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/helpers.py +0 -0
  523. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/ingest.py +0 -0
  524. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/notice_templates.py +0 -0
  525. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/score.py +0 -0
  526. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/styles.py +0 -0
  527. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/user_diff.py +0 -0
  528. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/report/user_notice.py +0 -0
  529. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/state.py +0 -0
  530. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/store.py +0 -0
  531. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/CLAUDE.md +0 -0
  532. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/__init__.py +0 -0
  533. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analysis_pipeline.py +0 -0
  534. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/__init__.py +0 -0
  535. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/css_permission.py +0 -0
  536. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/css_routing.py +0 -0
  537. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/device_compatibility.py +0 -0
  538. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/dn_ambiguity.py +0 -0
  539. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/duplicate_user.py +0 -0
  540. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/extension_conflict.py +0 -0
  541. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/feature_approximation.py +0 -0
  542. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/layout_overflow.py +0 -0
  543. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/location_ambiguity.py +0 -0
  544. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/missing_data.py +0 -0
  545. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/selective_call_handling.py +0 -0
  546. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/shared_line.py +0 -0
  547. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/voicemail_compatibility.py +0 -0
  548. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/analyzers/workspace_license.py +0 -0
  549. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/cross_reference.py +0 -0
  550. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/cucm_pattern.py +0 -0
  551. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/decisions.py +0 -0
  552. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/e164.py +0 -0
  553. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/engine.py +0 -0
  554. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/CLAUDE.md +0 -0
  555. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/__init__.py +0 -0
  556. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/announcement_mapper.py +0 -0
  557. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/base.py +0 -0
  558. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/button_template_mapper.py +0 -0
  559. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/call_forwarding_mapper.py +0 -0
  560. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/call_settings_mapper.py +0 -0
  561. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/css_mapper.py +0 -0
  562. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/dect_mapper.py +0 -0
  563. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/device_layout_mapper.py +0 -0
  564. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/device_mapper.py +0 -0
  565. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/device_profile_mapper.py +0 -0
  566. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/device_settings_mapper.py +0 -0
  567. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/e911_mapper.py +0 -0
  568. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/ecbn_mapper.py +0 -0
  569. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/executive_assistant_mapper.py +0 -0
  570. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/feature_mapper.py +0 -0
  571. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/line_mapper.py +0 -0
  572. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/location_mapper.py +0 -0
  573. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/moh_mapper.py +0 -0
  574. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/monitoring_mapper.py +0 -0
  575. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/receptionist_mapper.py +0 -0
  576. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/routing_mapper.py +0 -0
  577. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/snr_mapper.py +0 -0
  578. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/softkey_mapper.py +0 -0
  579. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/user_mapper.py +0 -0
  580. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/voicemail_group_mapper.py +0 -0
  581. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/voicemail_mapper.py +0 -0
  582. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/mappers/workspace_mapper.py +0 -0
  583. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/normalizers.py +0 -0
  584. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/pattern_converter.py +0 -0
  585. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/pipeline.py +0 -0
  586. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/migration/transform/rules.py +0 -0
  587. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/CLAUDE.md +0 -0
  588. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/__init__.py +0 -0
  589. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/analyze.py +0 -0
  590. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/checks.py +0 -0
  591. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/collector.py +0 -0
  592. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/models.py +0 -0
  593. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/org_health/report.py +0 -0
  594. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/output.py +0 -0
  595. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli/update_check.py +0 -0
  596. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/SOURCES.txt +0 -0
  597. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/dependency_links.txt +0 -0
  598. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/entry_points.txt +0 -0
  599. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/requires.txt +0 -0
  600. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/scm_file_list.json +0 -0
  601. {wxcli-1.4.0 → wxcli-1.4.2}/src/wxcli.egg-info/top_level.txt +0 -0
  602. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/__init__.py +0 -0
  603. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/__init__.py +0 -0
  604. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_advisor.py +0 -0
  605. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_advisory_executive_assistant.py +0 -0
  606. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_advisory_intercept.py +0 -0
  607. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_advisory_patterns.py +0 -0
  608. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_advisory_selective.py +0 -0
  609. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_foundation.py +0 -0
  610. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_integration.py +0 -0
  611. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_new_patterns.py +0 -0
  612. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_receptionist_advisory.py +0 -0
  613. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_recommendation_rules.py +0 -0
  614. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_recommendation_rules_tier2p2.py +0 -0
  615. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_recommendation_selective.py +0 -0
  616. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/advisory/test_tier4_patterns.py +0 -0
  617. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/__init__.py +0 -0
  618. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/fixtures/__init__.py +0 -0
  619. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_connection.py +0 -0
  620. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_cpc_detail_fetch.py +0 -0
  621. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_device_settings_tags.py +0 -0
  622. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_discovery.py +0 -0
  623. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_executive_assistant_extractor.py +0 -0
  624. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_extractors.py +0 -0
  625. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_informational_extractor.py +0 -0
  626. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_intercept_extractor.py +0 -0
  627. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_template_extractor.py +0 -0
  628. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_tier4_extractor.py +0 -0
  629. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/cucm/test_unity_shared_mailboxes.py +0 -0
  630. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/__init__.py +0 -0
  631. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/conftest.py +0 -0
  632. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_advisory_to_execution_bridge.py +0 -0
  633. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_batch.py +0 -0
  634. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bridge_integration.py +0 -0
  635. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_batch.py +0 -0
  636. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_config.py +0 -0
  637. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_constants.py +0 -0
  638. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_e2e.py +0 -0
  639. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_fallback.py +0 -0
  640. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_handlers.py +0 -0
  641. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_integration.py +0 -0
  642. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_planner.py +0 -0
  643. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_polling.py +0 -0
  644. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_bulk_serialization.py +0 -0
  645. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_cascade_and_retry.py +0 -0
  646. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_dect_handlers.py +0 -0
  647. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_dect_planner.py +0 -0
  648. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_dependency.py +0 -0
  649. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_device_settings_handlers.py +0 -0
  650. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_device_settings_planner.py +0 -0
  651. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_engine.py +0 -0
  652. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_engine_409_recovery.py +0 -0
  653. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_executive_assistant_handlers.py +0 -0
  654. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_handlers.py +0 -0
  655. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_handlers_forwarding.py +0 -0
  656. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_handlers_workspace_settings.py +0 -0
  657. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_hoteling_handlers.py +0 -0
  658. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_phase12a_planner_fixes.py +0 -0
  659. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_planner.py +0 -0
  660. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_planner_forwarding.py +0 -0
  661. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_planner_settings_ops.py +0 -0
  662. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_planner_silent_skip_visibility.py +0 -0
  663. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_receptionist_handler.py +0 -0
  664. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_runtime.py +0 -0
  665. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave1.py +0 -0
  666. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave2a.py +0 -0
  667. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave2b.py +0 -0
  668. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave2c.py +0 -0
  669. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave3a.py +0 -0
  670. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_silent_failure_wave3b.py +0 -0
  671. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_voicemail_group_handler.py +0 -0
  672. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/execute/test_voicemail_group_planner.py +0 -0
  673. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/export/__init__.py +0 -0
  674. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/export/test_csv_activation_codes.py +0 -0
  675. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/export/test_deployment_plan.py +0 -0
  676. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/preflight/__init__.py +0 -0
  677. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/preflight/test_checks.py +0 -0
  678. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/preflight/test_runner.py +0 -0
  679. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/__init__.py +0 -0
  680. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/conftest.py +0 -0
  681. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_appendix.py +0 -0
  682. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_appendix_selective.py +0 -0
  683. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_appendix_tier2p2.py +0 -0
  684. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_appendix_tier3.py +0 -0
  685. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_assembler.py +0 -0
  686. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_cli_integration.py +0 -0
  687. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_dect_appendix.py +0 -0
  688. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_device_settings_score.py +0 -0
  689. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_e2e.py +0 -0
  690. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_executive.py +0 -0
  691. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_executive_selective.py +0 -0
  692. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_explainer.py +0 -0
  693. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_from_file.py +0 -0
  694. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_helpers.py +0 -0
  695. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_score.py +0 -0
  696. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_tier4_appendix.py +0 -0
  697. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_user_diff.py +0 -0
  698. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/report/test_user_notice.py +0 -0
  699. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_cucm_cli.py +0 -0
  700. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_decision_cli.py +0 -0
  701. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_dect_integration.py +0 -0
  702. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_device_settings_lossy_type.py +0 -0
  703. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_models.py +0 -0
  704. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_models_tier2p2.py +0 -0
  705. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_models_voicemail_group.py +0 -0
  706. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_pipeline_e2e.py +0 -0
  707. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_rate_limiter.py +0 -0
  708. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_state.py +0 -0
  709. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/test_store.py +0 -0
  710. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/__init__.py +0 -0
  711. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/conftest.py +0 -0
  712. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_advisor_routing_coverage.py +0 -0
  713. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_advisory_pattern_coverage.py +0 -0
  714. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_config_key_coverage.py +0 -0
  715. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_decision_type_coverage.py +0 -0
  716. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_default_auto_rules_coverage.py +0 -0
  717. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_recommendation_output_coverage.py +0 -0
  718. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_runbook_cites.py +0 -0
  719. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_runbook_cli_commands.py +0 -0
  720. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_runbook_links.py +0 -0
  721. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_runbook_parsability.py +0 -0
  722. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transferability/test_score_factor_display_names.py +0 -0
  723. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/__init__.py +0 -0
  724. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/analyzers/__init__.py +0 -0
  725. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/analyzers/test_each_analyzer.py +0 -0
  726. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/analyzers/test_layout_overflow.py +0 -0
  727. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/conftest.py +0 -0
  728. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/__init__.py +0 -0
  729. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_announcement_mapper.py +0 -0
  730. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_button_template_mapper.py +0 -0
  731. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_call_forwarding_mapper.py +0 -0
  732. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_call_settings_mapper.py +0 -0
  733. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_call_settings_mapper_intercept.py +0 -0
  734. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_css_mapper.py +0 -0
  735. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_dect_mapper.py +0 -0
  736. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_device_layout_mapper.py +0 -0
  737. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_device_layout_mapper_convertible.py +0 -0
  738. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_device_mapper.py +0 -0
  739. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_device_profile_mapper.py +0 -0
  740. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_device_settings_mapper.py +0 -0
  741. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_e911_mapper.py +0 -0
  742. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_executive_assistant_mapper.py +0 -0
  743. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_feature_mapper.py +0 -0
  744. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_feature_mapper_forwarding.py +0 -0
  745. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_feature_mapper_voicemail_gap.py +0 -0
  746. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_line_mapper.py +0 -0
  747. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_location_mapper.py +0 -0
  748. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_moh_mapper.py +0 -0
  749. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_monitoring_mapper.py +0 -0
  750. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_phase12a_feature_fixes.py +0 -0
  751. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_receptionist_mapper.py +0 -0
  752. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_routing_mapper.py +0 -0
  753. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_snr_mapper.py +0 -0
  754. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_softkey_mapper.py +0 -0
  755. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_user_mapper.py +0 -0
  756. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_voicemail_enrichment.py +0 -0
  757. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_voicemail_group_mapper.py +0 -0
  758. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_voicemail_mapper.py +0 -0
  759. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_workspace_mapper.py +0 -0
  760. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/mappers/test_workspace_mapper_call_settings.py +0 -0
  761. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_analysis_pipeline.py +0 -0
  762. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_classify_decisions.py +0 -0
  763. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cpc_cross_ref.py +0 -0
  764. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cross_decision_enrichment.py +0 -0
  765. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cross_ref_phone_mirror.py +0 -0
  766. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cross_ref_tier2p2.py +0 -0
  767. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cross_reference.py +0 -0
  768. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_cucm_pattern.py +0 -0
  769. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_decision_merge.py +0 -0
  770. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_dect_classification.py +0 -0
  771. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_default_auto_rules_field_alignment.py +0 -0
  772. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_e164.py +0 -0
  773. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_engine.py +0 -0
  774. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_executive_assistant_integration.py +0 -0
  775. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_integration.py +0 -0
  776. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_intercept_integration.py +0 -0
  777. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalize_phone_device_settings.py +0 -0
  778. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalizers.py +0 -0
  779. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalizers_executive.py +0 -0
  780. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalizers_intercept.py +0 -0
  781. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalizers_tier2p2.py +0 -0
  782. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_normalizers_voicemail_group.py +0 -0
  783. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_pattern_converter.py +0 -0
  784. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_phase12a_analyzer_routing_fixes.py +0 -0
  785. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_pipeline.py +0 -0
  786. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_pipeline_common_area.py +0 -0
  787. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_rules.py +0 -0
  788. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_selective_call_handling_analyzer.py +0 -0
  789. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_selective_integration.py +0 -0
  790. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_shared_line_status.py +0 -0
  791. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_voicemail_group_integration.py +0 -0
  792. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_voicemail_group_pipeline.py +0 -0
  793. {wxcli-1.4.0 → wxcli-1.4.2}/tests/migration/transform/test_workspace_call_settings_integration.py +0 -0
  794. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/__init__.py +0 -0
  795. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/conftest.py +0 -0
  796. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_analyze.py +0 -0
  797. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_checks.py +0 -0
  798. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_cli.py +0 -0
  799. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_collector.py +0 -0
  800. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_models.py +0 -0
  801. {wxcli-1.4.0 → wxcli-1.4.2}/tests/org_health/test_report.py +0 -0
  802. {wxcli-1.4.0 → wxcli-1.4.2}/tools/__init__.py +0 -0
  803. {wxcli-1.4.0 → wxcli-1.4.2}/tools/create_stress_test_db.py +0 -0
  804. {wxcli-1.4.0 → wxcli-1.4.2}/tools/expand_cucm_data.py +0 -0
  805. {wxcli-1.4.0 → wxcli-1.4.2}/tools/postman_parser.py +0 -0
  806. {wxcli-1.4.0 → wxcli-1.4.2}/tools/postman_spec_diff.py +0 -0
  807. {wxcli-1.4.0 → wxcli-1.4.2}/tools/spec_overlay.py +0 -0
  808. {wxcli-1.4.0 → wxcli-1.4.2}/tools/update-specs.py +0 -0
  809. {wxcli-1.4.0 → wxcli-1.4.2}/tools/webhook_receiver.py +0 -0
  810. {wxcli-1.4.0 → wxcli-1.4.2}/tools/wheel_playbook_smoke.py +0 -0
  811. {wxcli-1.4.0 → wxcli-1.4.2}/wxcli-dist/assemble.py +0 -0
  812. {wxcli-1.4.0 → wxcli-1.4.2}/wxcli-dist/codex/agents-md-sections.md +0 -0
  813. {wxcli-1.4.0 → wxcli-1.4.2}/wxcli-dist/codex/config.toml +0 -0
  814. {wxcli-1.4.0 → wxcli-1.4.2}/wxcli-dist/settings.bundled.json +0 -0
@@ -692,12 +692,6 @@ These are non-negotiable. Violating any of these causes failures, data loss, or
692
692
  ### Verify Auth Before Executing
693
693
  ALWAYS validate the access token before running any commands. A stale token causes cryptic 401 errors mid-execution. Run `wxcli whoami` as a smoke test before starting.
694
694
 
695
- ### Present Plan Before Executing
696
- ALWAYS show the complete deployment plan and get explicit user approval before making any API calls. Never execute without sign-off. The user must see every API call that will be made, with actual parameter values.
697
-
698
- ### Never Execute Without Approval
699
- If the user says "just do it" without seeing the plan, show the plan first anyway. This is not optional. The one exception is single read-only operations (GET requests) used for discovery during the interview phase.
700
-
701
695
  ### Handle Rate Limiting
702
696
  Webex APIs enforce rate limits. wxcli does NOT auto-retry 429s in normal CLI mode — it raises an error. For shell loops, add `sleep 1` between commands to avoid hitting limits. For bulk async operations, use the semaphore + 429 retry pattern (see Bulk Operations section).
703
697
 
@@ -217,7 +217,7 @@ wxcli auto-attendant create LOCATION_ID \
217
217
  --business-schedule "Business Hours"
218
218
  ```
219
219
 
220
- Optional flags: `--phone-number`, `--holiday-schedule`, `--disabled`.
220
+ Optional flags: `--phone-number`, `--holiday-schedule`, `--extension-dialing`, `--name-dialing`, `--first-name`, `--last-name`, `--language-code`, `--time-zone`.
221
221
 
222
222
  ---
223
223
 
@@ -376,7 +376,7 @@ wxcli paging-group create LOCATION_ID \
376
376
  --extension 8100
377
377
  ```
378
378
 
379
- Optional flags: `--disabled`.
379
+ Optional flags: `--phone-number`, `--first-name`, `--last-name`, `--language-code`, `--originator-caller-id-enabled`.
380
380
 
381
381
  To list existing paging groups:
382
382
 
@@ -463,7 +463,7 @@ This table is the PRIMARY execution mechanism. The pipeline says WHAT. The domai
463
463
  |--------------|---------|-------------|------------------------------|
464
464
  | location | create | provision-calling | Two-step: `locations create` + `location-settings create` to enable calling |
465
465
  | location | enable_calling | provision-calling | Separate API call to enable Webex Calling on the location |
466
- | user | create | provision-calling | Extension required at creation. License via `--license`. Combines create + assign_number + assign_license |
466
+ | user | create | provision-calling | Extension required at creation. `people create` has no license flag — licenses are assigned separately via the `licenses` group. Combines create + assign_number + assign_license |
467
467
  | user | configure_settings | manage-call-settings | Read-before-write. `--json-body` format. Per-setting endpoint paths |
468
468
  | user | configure_voicemail | manage-call-settings | Same as configure_settings |
469
469
  | workspace | create | provision-calling | License tier matters. Basic vs Professional determines which settings work |
@@ -504,7 +504,7 @@ Next steps:
504
504
 
505
505
  10. **206 Partial Content is not an error** -- The PATCH endpoint can return HTTP 206 when some licenses succeeded but others failed. Always compare the returned `licenses` array against what was requested.
506
506
 
507
- 11. **`licenses` (admin spec) vs `licenses` (calling spec)** -- Use `licenses` for assignment/removal and full inventory. Use `licenses` with `--calling-only` for quick calling-license audits.
507
+ 11. **`licenses-api` is a deprecated alias for `licenses`** -- Both names resolve to the same module with the same commands (`list`, `show`, `update`). Prefer `licenses`; `licenses-api` will be removed.
508
508
 
509
509
  12. **Log all operations** -- Print what you are about to do before each CLI command, and print the result after. This creates an audit trail for troubleshooting.
510
510
 
@@ -555,17 +555,6 @@ Licensing-specific errors:
555
555
 
556
556
  ---
557
557
 
558
- ## Two CLI Groups for Licensing
559
-
560
- | | `licenses` (admin spec) | `licenses` (calling spec) |
561
- |---|---|---|
562
- | **Commands** | list, show, update | list, show |
563
- | **Best for** | Full lifecycle: inventory, details with assigned users, assign, remove | Quick calling-license audit |
564
- | **Assignment** | Yes -- via `update` with `--json-body` | No -- read-only |
565
- | **Filter** | No built-in filter (use JSON output + script) | `--calling-only` flag |
566
-
567
- ---
568
-
569
558
  ## License Type Quick Reference
570
559
 
571
560
  | License Name Pattern | Type | Properties Required |
@@ -33,8 +33,32 @@ jobs:
33
33
  # to stub aiohttp. It is declared nowhere else, so a dev with it
34
34
  # installed sees green locally while CI cannot even collect them.
35
35
  pip install pytest pytest-asyncio aioresponses
36
+ # aiohttp is pinned HERE and not in pyproject on purpose: nothing is
37
+ # wrong with the CLI on aiohttp 3.14 — the break is in the test double.
38
+ # aioresponses 0.7.9 builds a ClientResponse by hand and does not pass
39
+ # `stream_writer`, which aiohttp 3.14 made a required kwarg, so every
40
+ # test that stubs aiohttp dies with TypeError at request time. Its own
41
+ # metadata claims `aiohttp<4.0,>=3.8`, so pip will not resolve away
42
+ # from it and the pin has to be ours. Pinning the runtime dep in
43
+ # pyproject instead would constrain USERS for a test-only defect.
44
+ # Drop this the moment aioresponses supports 3.14 (28 tests, all in
45
+ # tests/migration/execute/, will tell you immediately).
46
+ pip install 'aiohttp<3.14'
36
47
 
37
48
  - name: Run tests (excluding live API tests)
49
+ # TERM=dumb, not NO_COLOR=1. rich special-cases GitHub Actions as a
50
+ # colour-capable terminal, so `--help` output comes back wrapped in ANSI
51
+ # and `assert "--host" in result.output` fails on text that renders
52
+ # correctly. NO_COLOR is the wrong knob and was measured failing: it
53
+ # suppresses colour but NOT bold/dim, so rich still emits `\x1b[1m`
54
+ # between the dashes and still splits the flag. TERM=dumb makes
55
+ # rich's is_terminal false, which is what actually yields plain text.
56
+ # COLUMNS is set for the same reason the repo drives every real
57
+ # `--help` as `COLUMNS=400 TERM=dumb`: at 80 cols rich wraps a long flag
58
+ # declaration onto a second line and a substring assertion misses it.
59
+ env:
60
+ TERM: dumb
61
+ COLUMNS: "400"
38
62
  run: |
39
63
  pytest tests/ -m "not live" -v --tb=short
40
64
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wxcli
3
- Version: 1.4.0
3
+ Version: 1.4.2
4
4
  Summary: Webex Calling CLI — terminal-based provisioning for Webex APIs
5
5
  Author: Adam Hobgood
6
6
  License: Apache-2.0
@@ -373,9 +373,13 @@ channel. Useful for IVR flows that announce hold times to callers. 1 command.
373
373
 
374
374
  ### Key Parameters
375
375
 
376
- - `--queue-id` -- Queue ID to check
377
- - `--media-type` -- Media type (e.g., `telephony`, `chat`, `email`)
378
- - `--lookup-type` -- Type of EWT lookup
376
+ - `--queue-id` -- Queue ID to check (required)
377
+ - `--lookback-minutes` -- Sampling window, 5-240 (required)
378
+ - `--max-cv` -- Maximum coefficient of variance within a subset of samples (wait times for tasks
379
+ connected to an agent in a one-minute interval), used to determine whether the average of those
380
+ values is treated as a valid sample for EWT computation. 1-100, defaults to 40%
381
+ - `--min-valid-samples` -- Minimum percentage of valid samples, with respect to the total number of
382
+ samples, within the specified lookback window. 1-100, defaults to 40%
379
383
 
380
384
  ### CLI Examples
381
385
 
@@ -459,7 +459,9 @@ Registration forms and registrant management for webinar-type meetings. These en
459
459
  | `--require-company-name` | Require company name |
460
460
  | `--require-job-title` | Require job title |
461
461
  | `--require-work-phone` | Require work phone number |
462
- | `--require-address-1` | Require address line 1 |
462
+ | `--require-fax` | Require fax number |
463
+ | `--require-address1` | Require address line 1 |
464
+ | `--require-address2` | Require address line 2 |
463
465
  | `--require-city` | Require city |
464
466
  | `--require-state` | Require state/province |
465
467
  | `--require-zip-code` | Require postal code |
@@ -258,7 +258,7 @@ messages = result.get("items", [])
258
258
  ### Gotchas
259
259
 
260
260
  - **`--room-id` is required for `list`** — there is no global messages endpoint. You must specify a room.
261
- - **`--files` accepts a URL, not a local file path.** The URL must be publicly accessible or a Webex content URL. For local file uploads, use `--json-body` with a multipart approach or upload first via another mechanism.
261
+ - **There is no `--files` flag** — the API's `files` field is an array, so it is not rendered as a flag (known issue #2). Attach via `--json-body '{"roomId":"...","text":"...","files":["https://example.com/a.png"]}'`. The entry must be a **publicly accessible URL, not a local file path**, and the API accepts only one file per message. For a local file, upload it somewhere reachable first.
262
262
  - **Bots can only read messages where they are @mentioned**, except in 1:1 direct spaces where they see all messages.
263
263
  - **Edit only works on messages sent by the authenticated user or bot.** Editing someone else's message will return 403.
264
264
  - **`--before` and `--before-message` are pagination tools** — use `--before-message` with the ID of the oldest message in the last page to walk backward through history.
@@ -692,12 +692,6 @@ These are non-negotiable. Violating any of these causes failures, data loss, or
692
692
  ### Verify Auth Before Executing
693
693
  ALWAYS validate the access token before running any commands. A stale token causes cryptic 401 errors mid-execution. Run `wxcli whoami` as a smoke test before starting.
694
694
 
695
- ### Present Plan Before Executing
696
- ALWAYS show the complete deployment plan and get explicit user approval before making any API calls. Never execute without sign-off. The user must see every API call that will be made, with actual parameter values.
697
-
698
- ### Never Execute Without Approval
699
- If the user says "just do it" without seeing the plan, show the plan first anyway. This is not optional. The one exception is single read-only operations (GET requests) used for discovery during the interview phase.
700
-
701
695
  ### Handle Rate Limiting
702
696
  Webex APIs enforce rate limits. wxcli does NOT auto-retry 429s in normal CLI mode — it raises an error. For shell loops, add `sleep 1` between commands to avoid hitting limits. For bulk async operations, use the semaphore + 429 retry pattern (see Bulk Operations section).
703
697
 
@@ -217,7 +217,7 @@ wxcli auto-attendant create LOCATION_ID \
217
217
  --business-schedule "Business Hours"
218
218
  ```
219
219
 
220
- Optional flags: `--phone-number`, `--holiday-schedule`, `--disabled`.
220
+ Optional flags: `--phone-number`, `--holiday-schedule`, `--extension-dialing`, `--name-dialing`, `--first-name`, `--last-name`, `--language-code`, `--time-zone`.
221
221
 
222
222
  ---
223
223
 
@@ -376,7 +376,7 @@ wxcli paging-group create LOCATION_ID \
376
376
  --extension 8100
377
377
  ```
378
378
 
379
- Optional flags: `--disabled`.
379
+ Optional flags: `--phone-number`, `--first-name`, `--last-name`, `--language-code`, `--originator-caller-id-enabled`.
380
380
 
381
381
  To list existing paging groups:
382
382
 
@@ -463,7 +463,7 @@ This table is the PRIMARY execution mechanism. The pipeline says WHAT. The domai
463
463
  |--------------|---------|-------------|------------------------------|
464
464
  | location | create | provision-calling | Two-step: `locations create` + `location-settings create` to enable calling |
465
465
  | location | enable_calling | provision-calling | Separate API call to enable Webex Calling on the location |
466
- | user | create | provision-calling | Extension required at creation. License via `--license`. Combines create + assign_number + assign_license |
466
+ | user | create | provision-calling | Extension required at creation. `people create` has no license flag — licenses are assigned separately via the `licenses` group. Combines create + assign_number + assign_license |
467
467
  | user | configure_settings | manage-call-settings | Read-before-write. `--json-body` format. Per-setting endpoint paths |
468
468
  | user | configure_voicemail | manage-call-settings | Same as configure_settings |
469
469
  | workspace | create | provision-calling | License tier matters. Basic vs Professional determines which settings work |
@@ -504,7 +504,7 @@ Next steps:
504
504
 
505
505
  10. **206 Partial Content is not an error** -- The PATCH endpoint can return HTTP 206 when some licenses succeeded but others failed. Always compare the returned `licenses` array against what was requested.
506
506
 
507
- 11. **`licenses` (admin spec) vs `licenses` (calling spec)** -- Use `licenses` for assignment/removal and full inventory. Use `licenses` with `--calling-only` for quick calling-license audits.
507
+ 11. **`licenses-api` is a deprecated alias for `licenses`** -- Both names resolve to the same module with the same commands (`list`, `show`, `update`). Prefer `licenses`; `licenses-api` will be removed.
508
508
 
509
509
  12. **Log all operations** -- Print what you are about to do before each CLI command, and print the result after. This creates an audit trail for troubleshooting.
510
510
 
@@ -555,17 +555,6 @@ Licensing-specific errors:
555
555
 
556
556
  ---
557
557
 
558
- ## Two CLI Groups for Licensing
559
-
560
- | | `licenses` (admin spec) | `licenses` (calling spec) |
561
- |---|---|---|
562
- | **Commands** | list, show, update | list, show |
563
- | **Best for** | Full lifecycle: inventory, details with assigned users, assign, remove | Quick calling-license audit |
564
- | **Assignment** | Yes -- via `update` with `--json-body` | No -- read-only |
565
- | **Filter** | No built-in filter (use JSON output + script) | `--calling-only` flag |
566
-
567
- ---
568
-
569
558
  ## License Type Quick Reference
570
559
 
571
560
  | License Name Pattern | Type | Properties Required |
@@ -687,12 +687,6 @@ These are non-negotiable. Violating any of these causes failures, data loss, or
687
687
  ### Verify Auth Before Executing
688
688
  ALWAYS validate the access token before running any commands. A stale token causes cryptic 401 errors mid-execution. Run `wxcli whoami` as a smoke test before starting.
689
689
 
690
- ### Present Plan Before Executing
691
- ALWAYS show the complete deployment plan and get explicit user approval before making any API calls. Never execute without sign-off. The user must see every API call that will be made, with actual parameter values.
692
-
693
- ### Never Execute Without Approval
694
- If the user says "just do it" without seeing the plan, show the plan first anyway. This is not optional. The one exception is single read-only operations (GET requests) used for discovery during the interview phase.
695
-
696
690
  ### Handle Rate Limiting
697
691
  Webex APIs enforce rate limits. wxcli does NOT auto-retry 429s in normal CLI mode — it raises an error. For shell loops, add `sleep 1` between commands to avoid hitting limits. For bulk async operations, use the semaphore + 429 retry pattern (see Bulk Operations section).
698
692
 
@@ -217,7 +217,7 @@ wxcli auto-attendant create LOCATION_ID \
217
217
  --business-schedule "Business Hours"
218
218
  ```
219
219
 
220
- Optional flags: `--phone-number`, `--holiday-schedule`, `--disabled`.
220
+ Optional flags: `--phone-number`, `--holiday-schedule`, `--extension-dialing`, `--name-dialing`, `--first-name`, `--last-name`, `--language-code`, `--time-zone`.
221
221
 
222
222
  ---
223
223
 
@@ -376,7 +376,7 @@ wxcli paging-group create LOCATION_ID \
376
376
  --extension 8100
377
377
  ```
378
378
 
379
- Optional flags: `--disabled`.
379
+ Optional flags: `--phone-number`, `--first-name`, `--last-name`, `--language-code`, `--originator-caller-id-enabled`.
380
380
 
381
381
  To list existing paging groups:
382
382
 
@@ -463,7 +463,7 @@ This table is the PRIMARY execution mechanism. The pipeline says WHAT. The domai
463
463
  |--------------|---------|-------------|------------------------------|
464
464
  | location | create | provision-calling | Two-step: `locations create` + `location-settings create` to enable calling |
465
465
  | location | enable_calling | provision-calling | Separate API call to enable Webex Calling on the location |
466
- | user | create | provision-calling | Extension required at creation. License via `--license`. Combines create + assign_number + assign_license |
466
+ | user | create | provision-calling | Extension required at creation. `people create` has no license flag — licenses are assigned separately via the `licenses` group. Combines create + assign_number + assign_license |
467
467
  | user | configure_settings | manage-call-settings | Read-before-write. `--json-body` format. Per-setting endpoint paths |
468
468
  | user | configure_voicemail | manage-call-settings | Same as configure_settings |
469
469
  | workspace | create | provision-calling | License tier matters. Basic vs Professional determines which settings work |
@@ -504,7 +504,7 @@ Next steps:
504
504
 
505
505
  10. **206 Partial Content is not an error** -- The PATCH endpoint can return HTTP 206 when some licenses succeeded but others failed. Always compare the returned `licenses` array against what was requested.
506
506
 
507
- 11. **`licenses` (admin spec) vs `licenses` (calling spec)** -- Use `licenses` for assignment/removal and full inventory. Use `licenses` with `--calling-only` for quick calling-license audits.
507
+ 11. **`licenses-api` is a deprecated alias for `licenses`** -- Both names resolve to the same module with the same commands (`list`, `show`, `update`). Prefer `licenses`; `licenses-api` will be removed.
508
508
 
509
509
  12. **Log all operations** -- Print what you are about to do before each CLI command, and print the result after. This creates an audit trail for troubleshooting.
510
510
 
@@ -555,17 +555,6 @@ Licensing-specific errors:
555
555
 
556
556
  ---
557
557
 
558
- ## Two CLI Groups for Licensing
559
-
560
- | | `licenses` (admin spec) | `licenses` (calling spec) |
561
- |---|---|---|
562
- | **Commands** | list, show, update | list, show |
563
- | **Best for** | Full lifecycle: inventory, details with assigned users, assign, remove | Quick calling-license audit |
564
- | **Assignment** | Yes -- via `update` with `--json-body` | No -- read-only |
565
- | **Filter** | No built-in filter (use JSON output + script) | `--calling-only` flag |
566
-
567
- ---
568
-
569
558
  ## License Type Quick Reference
570
559
 
571
560
  | License Name Pattern | Type | Properties Required |
@@ -373,9 +373,13 @@ channel. Useful for IVR flows that announce hold times to callers. 1 command.
373
373
 
374
374
  ### Key Parameters
375
375
 
376
- - `--queue-id` -- Queue ID to check
377
- - `--media-type` -- Media type (e.g., `telephony`, `chat`, `email`)
378
- - `--lookup-type` -- Type of EWT lookup
376
+ - `--queue-id` -- Queue ID to check (required)
377
+ - `--lookback-minutes` -- Sampling window, 5-240 (required)
378
+ - `--max-cv` -- Maximum coefficient of variance within a subset of samples (wait times for tasks
379
+ connected to an agent in a one-minute interval), used to determine whether the average of those
380
+ values is treated as a valid sample for EWT computation. 1-100, defaults to 40%
381
+ - `--min-valid-samples` -- Minimum percentage of valid samples, with respect to the total number of
382
+ samples, within the specified lookback window. 1-100, defaults to 40%
379
383
 
380
384
  ### CLI Examples
381
385
 
@@ -459,7 +459,9 @@ Registration forms and registrant management for webinar-type meetings. These en
459
459
  | `--require-company-name` | Require company name |
460
460
  | `--require-job-title` | Require job title |
461
461
  | `--require-work-phone` | Require work phone number |
462
- | `--require-address-1` | Require address line 1 |
462
+ | `--require-fax` | Require fax number |
463
+ | `--require-address1` | Require address line 1 |
464
+ | `--require-address2` | Require address line 2 |
463
465
  | `--require-city` | Require city |
464
466
  | `--require-state` | Require state/province |
465
467
  | `--require-zip-code` | Require postal code |
@@ -258,7 +258,7 @@ messages = result.get("items", [])
258
258
  ### Gotchas
259
259
 
260
260
  - **`--room-id` is required for `list`** — there is no global messages endpoint. You must specify a room.
261
- - **`--files` accepts a URL, not a local file path.** The URL must be publicly accessible or a Webex content URL. For local file uploads, use `--json-body` with a multipart approach or upload first via another mechanism.
261
+ - **There is no `--files` flag** — the API's `files` field is an array, so it is not rendered as a flag (known issue #2). Attach via `--json-body '{"roomId":"...","text":"...","files":["https://example.com/a.png"]}'`. The entry must be a **publicly accessible URL, not a local file path**, and the API accepts only one file per message. For a local file, upload it somewhere reachable first.
262
262
  - **Bots can only read messages where they are @mentioned**, except in 1:1 direct spaces where they see all messages.
263
263
  - **Edit only works on messages sent by the authenticated user or bot.** Editing someone else's message will return 403.
264
264
  - **`--before` and `--before-message` are pagination tools** — use `--before-message` with the ID of the oldest message in the last page to walk backward through history.
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.4.0'
22
- __version_tuple__ = version_tuple = (1, 4, 0)
21
+ __version__ = version = '1.4.2'
22
+ __version_tuple__ = version_tuple = (1, 4, 2)
23
23
 
24
- __commit_id__ = commit_id = 'g668a7a249'
24
+ __commit_id__ = commit_id = 'g9318ddb89'
@@ -79,8 +79,14 @@ class WebexSession:
79
79
  return self._json_or_raise(self._request("PATCH", url, json=json, params=params,
80
80
  content_type=content_type))
81
81
 
82
- def rest_delete(self, url: str, params=None) -> dict:
83
- return self._json_or_raise(self._request("DELETE", url, params=params))
82
+ def rest_delete(self, url: str, json=None, params=None) -> dict:
83
+ # DELETE carries a body on 10 Webex operations: the body is what SCOPES
84
+ # the delete (`supervisorIds`, `phoneNumbers`, `backgroundImages`...).
85
+ # Without it the API rejects the call outright — verified live against
86
+ # /telephony/config/supervisors: 400, errorCode 25024, "Required request
87
+ # body is missing". It does NOT delete everything; those endpoints gate
88
+ # delete-all behind an explicit `deleteAll: true`.
89
+ return self._json_or_raise(self._request("DELETE", url, json=json, params=params))
84
90
 
85
91
  def follow_pagination(self, url: str, params=None, item_key: str = "items"):
86
92
  while url:
@@ -301,6 +301,9 @@ def show(
301
301
  def delete_recordings(
302
302
  recording_id: str = typer.Argument(help="recordingId"),
303
303
  host_email: str = typer.Option(None, "--host-email", help="Email address for the meeting host. Only used if the user or"),
304
+ reason: str = typer.Option(None, "--reason", help="Reason for deleting a recording. Only required when a Compli"),
305
+ comment: str = typer.Option(None, "--comment", help="Compliance Officer's explanation for deleting a recording. T"),
306
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
304
307
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
305
308
  debug: bool = typer.Option(False, "--debug"),
306
309
  ):
@@ -312,8 +315,16 @@ def delete_recordings(
312
315
  params = {}
313
316
  if host_email is not None:
314
317
  params["hostEmail"] = host_email
318
+ if json_body:
319
+ body = json.loads(json_body)
320
+ else:
321
+ body = {}
322
+ if reason is not None:
323
+ body["reason"] = reason
324
+ if comment is not None:
325
+ body["comment"] = comment
315
326
  try:
316
- api.session.rest_delete(url, params=params)
327
+ api.session.rest_delete(url, json=body or None, params=params)
317
328
  except WebexError as e:
318
329
  handle_rest_error(e)
319
330
  typer.echo(f"Deleted: {recording_id}")
@@ -1159,6 +1159,9 @@ def create_supervisors(
1159
1159
 
1160
1160
  @app.command("delete-supervisors-config")
1161
1161
  def delete_supervisors_config(
1162
+ has_cx_essentials: bool = typer.Option(None, "--has-cx-essentials/--no-has-cx-essentials", help="Delete the Customer Assist supervisors, when `true`. Otherwi"),
1163
+ delete_all: bool = typer.Option(None, "--delete-all/--no-delete-all", help="If present the `supervisorIds` array is ignored, and all sup"),
1164
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
1162
1165
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
1163
1166
  debug: bool = typer.Option(False, "--debug"),
1164
1167
  ):
@@ -1171,8 +1174,20 @@ def delete_supervisors_config(
1171
1174
  org_id = get_org_id()
1172
1175
  if org_id is not None:
1173
1176
  params["orgId"] = org_id
1177
+ if json_body:
1178
+ body = json.loads(json_body)
1179
+ else:
1180
+ body = {}
1181
+ if has_cx_essentials is not None:
1182
+ body["hasCxEssentials"] = has_cx_essentials
1183
+ if delete_all is not None:
1184
+ body["deleteAll"] = delete_all
1185
+ missing = [f for f in ['supervisorIds'] if f not in body]
1186
+ if missing:
1187
+ typer.echo(f"Error: required body field(s) missing: {', '.join(missing)}. Pass them via --json-body — this delete needs to know what to delete.", err=True)
1188
+ raise typer.Exit(1)
1174
1189
  try:
1175
- api.session.rest_delete(url, params=params)
1190
+ api.session.rest_delete(url, json=body or None, params=params)
1176
1191
  except WebexError as e:
1177
1192
  handle_rest_error(e)
1178
1193
  typer.echo("Deleted.")
@@ -1600,6 +1615,7 @@ def create_dnis(
1600
1615
  def delete_dnis_queues(
1601
1616
  location_id: str = typer.Argument(help="locationId"),
1602
1617
  queue_id: str = typer.Argument(help="queueId"),
1618
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
1603
1619
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
1604
1620
  debug: bool = typer.Option(False, "--debug"),
1605
1621
  ):
@@ -1612,8 +1628,16 @@ def delete_dnis_queues(
1612
1628
  org_id = get_org_id()
1613
1629
  if org_id is not None:
1614
1630
  params["orgId"] = org_id
1631
+ if json_body:
1632
+ body = json.loads(json_body)
1633
+ else:
1634
+ body = {}
1635
+ missing = [f for f in ['items'] if f not in body]
1636
+ if missing:
1637
+ typer.echo(f"Error: required body field(s) missing: {', '.join(missing)}. Pass them via --json-body — this delete needs to know what to delete.", err=True)
1638
+ raise typer.Exit(1)
1615
1639
  try:
1616
- api.session.rest_delete(url, params=params)
1640
+ api.session.rest_delete(url, json=body or None, params=params)
1617
1641
  except WebexError as e:
1618
1642
  handle_rest_error(e)
1619
1643
  typer.echo(f"Deleted: {queue_id}")
@@ -18,7 +18,7 @@ def cmd_list(
18
18
  partial_name_search: str = typer.Option(None, "--partial-name-search", help="Performs a partial string match on the name of the flow. If"),
19
19
  search_by: str = typer.Option(None, "--search-by", help="Filter expression in the format `<field>|<value>`. Supports"),
20
20
  size: str = typer.Option(None, "--size", help="Defines the number of items to be displayed on a page. If th"),
21
- include_pagination: str = typer.Option(None, "--include-pagination", help="If set to to true then a different paginated response object"),
21
+ include_pagination: str = typer.Option(None, "--include-pagination", help="If set to true then a different paginated response object co"),
22
22
  is_validation: str = typer.Option(None, "--is-validation", help="If true, validates the existence of flows by ID regardless o"),
23
23
  output: str = typer.Option("table", "--output", "-o", help="Output format: table|json"),
24
24
  limit: int = typer.Option(0, "--limit", help="Max results (0=all for paginated endpoints, API default for non-paginated)"),
@@ -429,7 +429,7 @@ def list_validate(
429
429
  except WebexError as e:
430
430
  handle_rest_error(e)
431
431
  result = result or []
432
- items = result.get("errors", result.get("data", result if isinstance(result, list) else [])) if isinstance(result, dict) else (result if isinstance(result, list) else [])
432
+ items = result.get("results", result.get("data", result if isinstance(result, list) else [])) if isinstance(result, dict) else (result if isinstance(result, list) else [])
433
433
  if output == "json":
434
434
  print_json(items)
435
435
  else:
@@ -158,6 +158,9 @@ def show(
158
158
  @app.command("delete")
159
159
  def delete(
160
160
  recording_id: str = typer.Argument(help="recordingId"),
161
+ reason: str = typer.Option(None, "--reason", help="Reason for deleting a recording. Only required when a Compli"),
162
+ comment: str = typer.Option(None, "--comment", help="Compliance Officer's explanation for deleting a recording. T"),
163
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
161
164
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
162
165
  debug: bool = typer.Option(False, "--debug"),
163
166
  ):
@@ -166,8 +169,16 @@ def delete(
166
169
  typer.confirm(f"Delete {recording_id}?", abort=True)
167
170
  api = get_api(debug=debug)
168
171
  url = f"https://webexapis.com/v1/convergedRecordings/{recording_id}"
172
+ if json_body:
173
+ body = json.loads(json_body)
174
+ else:
175
+ body = {}
176
+ if reason is not None:
177
+ body["reason"] = reason
178
+ if comment is not None:
179
+ body["comment"] = comment
169
180
  try:
170
- api.session.rest_delete(url)
181
+ api.session.rest_delete(url, json=body or None)
171
182
  except WebexError as e:
172
183
  handle_rest_error(e)
173
184
  typer.echo(f"Deleted: {recording_id}")
@@ -526,6 +526,8 @@ def delete_handsets_dect_networks(
526
526
  def delete_handsets_dect_networks_1(
527
527
  location_id: str = typer.Argument(help="locationId"),
528
528
  dect_network_id: str = typer.Argument(help="dectNetworkId"),
529
+ delete_all: bool = typer.Option(None, "--delete-all/--no-delete-all", help="If present the items array is ignored and all items in the c"),
530
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
529
531
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
530
532
  debug: bool = typer.Option(False, "--debug"),
531
533
  ):
@@ -538,8 +540,18 @@ def delete_handsets_dect_networks_1(
538
540
  org_id = get_org_id()
539
541
  if org_id is not None:
540
542
  params["orgId"] = org_id
543
+ if json_body:
544
+ body = json.loads(json_body)
545
+ else:
546
+ body = {}
547
+ if delete_all is not None:
548
+ body["deleteAll"] = delete_all
549
+ missing = [f for f in ['handsetIds'] if f not in body]
550
+ if missing:
551
+ typer.echo(f"Error: required body field(s) missing: {', '.join(missing)}. Pass them via --json-body — this delete needs to know what to delete.", err=True)
552
+ raise typer.Exit(1)
541
553
  try:
542
- api.session.rest_delete(url, params=params)
554
+ api.session.rest_delete(url, json=body or None, params=params)
543
555
  except WebexError as e:
544
556
  handle_rest_error(e)
545
557
  typer.echo(f"Deleted: {dect_network_id}")
@@ -1439,6 +1439,7 @@ def list_background_images(
1439
1439
 
1440
1440
  @app.command("delete-background-images")
1441
1441
  def delete_background_images(
1442
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
1442
1443
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
1443
1444
  debug: bool = typer.Option(False, "--debug"),
1444
1445
  ):
@@ -1451,8 +1452,16 @@ def delete_background_images(
1451
1452
  org_id = get_org_id()
1452
1453
  if org_id is not None:
1453
1454
  params["orgId"] = org_id
1455
+ if json_body:
1456
+ body = json.loads(json_body)
1457
+ else:
1458
+ body = {}
1459
+ missing = [f for f in ['backgroundImages'] if f not in body]
1460
+ if missing:
1461
+ typer.echo(f"Error: required body field(s) missing: {', '.join(missing)}. Pass them via --json-body — this delete needs to know what to delete.", err=True)
1462
+ raise typer.Exit(1)
1454
1463
  try:
1455
- api.session.rest_delete(url, params=params)
1464
+ api.session.rest_delete(url, json=body or None, params=params)
1456
1465
  except WebexError as e:
1457
1466
  handle_rest_error(e)
1458
1467
  typer.echo("Deleted.")
@@ -213,6 +213,9 @@ def update(
213
213
  @app.command("delete")
214
214
  def delete(
215
215
  transcript_id: str = typer.Argument(help="transcriptId"),
216
+ reason: str = typer.Option(None, "--reason", help="Reason for deleting a transcript. Only required when a Compl"),
217
+ comment: str = typer.Option(None, "--comment", help="Explanation for deleting a transcript. The comment can be a"),
218
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
216
219
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
217
220
  debug: bool = typer.Option(False, "--debug"),
218
221
  ):
@@ -221,8 +224,16 @@ def delete(
221
224
  typer.confirm(f"Delete {transcript_id}?", abort=True)
222
225
  api = get_api(debug=debug)
223
226
  url = f"https://webexapis.com/v1/meetingTranscripts/{transcript_id}"
227
+ if json_body:
228
+ body = json.loads(json_body)
229
+ else:
230
+ body = {}
231
+ if reason is not None:
232
+ body["reason"] = reason
233
+ if comment is not None:
234
+ body["comment"] = comment
224
235
  try:
225
- api.session.rest_delete(url)
236
+ api.session.rest_delete(url, json=body or None)
226
237
  except WebexError as e:
227
238
  handle_rest_error(e)
228
239
  typer.echo(f"Deleted: {transcript_id}")
@@ -88,6 +88,7 @@ def update(
88
88
  @app.command("delete")
89
89
  def delete(
90
90
  location_id: str = typer.Argument(help="locationId"),
91
+ json_body: str = typer.Option(None, "--json-body", help="Full JSON body (overrides other options)"),
91
92
  force: bool = typer.Option(False, "--force", help="Skip confirmation"),
92
93
  debug: bool = typer.Option(False, "--debug"),
93
94
  ):
@@ -100,8 +101,16 @@ def delete(
100
101
  org_id = get_org_id()
101
102
  if org_id is not None:
102
103
  params["orgId"] = org_id
104
+ if json_body:
105
+ body = json.loads(json_body)
106
+ else:
107
+ body = {}
108
+ missing = [f for f in ['phoneNumbers'] if f not in body]
109
+ if missing:
110
+ typer.echo(f"Error: required body field(s) missing: {', '.join(missing)}. Pass them via --json-body — this delete needs to know what to delete.", err=True)
111
+ raise typer.Exit(1)
103
112
  try:
104
- api.session.rest_delete(url, params=params)
113
+ api.session.rest_delete(url, json=body or None, params=params)
105
114
  except WebexError as e:
106
115
  handle_rest_error(e)
107
116
  typer.echo(f"Deleted: {location_id}")