wxcli 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. wxcli/__init__.py +4 -0
  2. wxcli/_playbook/.claude/agents/migration-advisor.md +239 -0
  3. wxcli/_playbook/.claude/agents/wxc-calling-builder.md +946 -0
  4. wxcli/_playbook/.claude/rules/cleanup.md +29 -0
  5. wxcli/_playbook/.claude/rules/cucm-migration.md +58 -0
  6. wxcli/_playbook/.claude/rules/org-health.md +14 -0
  7. wxcli/_playbook/.claude/settings.json +8 -0
  8. wxcli/_playbook/.claude/skills/audit-compliance/SKILL.md +515 -0
  9. wxcli/_playbook/.claude/skills/call-control/SKILL.md +747 -0
  10. wxcli/_playbook/.claude/skills/configure-features/SKILL.md +623 -0
  11. wxcli/_playbook/.claude/skills/configure-routing/SKILL.md +627 -0
  12. wxcli/_playbook/.claude/skills/contact-center/SKILL.md +1181 -0
  13. wxcli/_playbook/.claude/skills/cucm-migrate/SKILL.md +820 -0
  14. wxcli/_playbook/.claude/skills/customer-assist/SKILL.md +443 -0
  15. wxcli/_playbook/.claude/skills/device-platform/SKILL.md +407 -0
  16. wxcli/_playbook/.claude/skills/manage-call-settings/SKILL.md +757 -0
  17. wxcli/_playbook/.claude/skills/manage-devices/SKILL.md +790 -0
  18. wxcli/_playbook/.claude/skills/manage-identity/SKILL.md +638 -0
  19. wxcli/_playbook/.claude/skills/manage-licensing/SKILL.md +528 -0
  20. wxcli/_playbook/.claude/skills/manage-meetings/SKILL.md +708 -0
  21. wxcli/_playbook/.claude/skills/messaging-bots/SKILL.md +365 -0
  22. wxcli/_playbook/.claude/skills/messaging-spaces/SKILL.md +520 -0
  23. wxcli/_playbook/.claude/skills/org-health/SKILL.md +159 -0
  24. wxcli/_playbook/.claude/skills/provision-calling/SKILL.md +421 -0
  25. wxcli/_playbook/.claude/skills/query-live/SKILL.md +183 -0
  26. wxcli/_playbook/.claude/skills/query-live/domains/call-flow-trace.md +223 -0
  27. wxcli/_playbook/.claude/skills/query-live/domains/call-history.md +44 -0
  28. wxcli/_playbook/.claude/skills/query-live/domains/features.md +169 -0
  29. wxcli/_playbook/.claude/skills/query-live/domains/numbers.md +93 -0
  30. wxcli/_playbook/.claude/skills/query-live/domains/people-and-settings.md +146 -0
  31. wxcli/_playbook/.claude/skills/query-live/domains/routing.md +124 -0
  32. wxcli/_playbook/.claude/skills/reporting/SKILL.md +501 -0
  33. wxcli/_playbook/.claude/skills/reporting/references/cdr-recipes.md +1628 -0
  34. wxcli/_playbook/.claude/skills/reporting-cc/SKILL.md +251 -0
  35. wxcli/_playbook/.claude/skills/reporting-meetings/SKILL.md +290 -0
  36. wxcli/_playbook/.claude/skills/teardown/SKILL.md +214 -0
  37. wxcli/_playbook/.claude/skills/video-mesh/SKILL.md +379 -0
  38. wxcli/_playbook/.claude/skills/wxc-calling-debug/SKILL.md +475 -0
  39. wxcli/_playbook/CLAUDE.md +373 -0
  40. wxcli/_playbook/docs/reference/CLAUDE.md +25 -0
  41. wxcli/_playbook/docs/reference/admin-apps-data.md +643 -0
  42. wxcli/_playbook/docs/reference/admin-audit-security.md +322 -0
  43. wxcli/_playbook/docs/reference/admin-hybrid.md +383 -0
  44. wxcli/_playbook/docs/reference/admin-identity-scim.md +1007 -0
  45. wxcli/_playbook/docs/reference/admin-licensing.md +414 -0
  46. wxcli/_playbook/docs/reference/admin-org-management.md +586 -0
  47. wxcli/_playbook/docs/reference/admin-partner.md +357 -0
  48. wxcli/_playbook/docs/reference/archive/wxc-sdk-patterns.md +1229 -0
  49. wxcli/_playbook/docs/reference/archive/wxcadm-advanced.md +835 -0
  50. wxcli/_playbook/docs/reference/archive/wxcadm-core.md +743 -0
  51. wxcli/_playbook/docs/reference/archive/wxcadm-devices-workspaces.md +1305 -0
  52. wxcli/_playbook/docs/reference/archive/wxcadm-features.md +849 -0
  53. wxcli/_playbook/docs/reference/archive/wxcadm-locations.md +938 -0
  54. wxcli/_playbook/docs/reference/archive/wxcadm-person.md +1255 -0
  55. wxcli/_playbook/docs/reference/archive/wxcadm-routing.md +1262 -0
  56. wxcli/_playbook/docs/reference/authentication.md +965 -0
  57. wxcli/_playbook/docs/reference/call-control.md +1205 -0
  58. wxcli/_playbook/docs/reference/call-features-additional.md +2541 -0
  59. wxcli/_playbook/docs/reference/call-features-major.md +1320 -0
  60. wxcli/_playbook/docs/reference/call-routing.md +2304 -0
  61. wxcli/_playbook/docs/reference/contact-center-analytics.md +1049 -0
  62. wxcli/_playbook/docs/reference/contact-center-core.md +1614 -0
  63. wxcli/_playbook/docs/reference/contact-center-journey.md +457 -0
  64. wxcli/_playbook/docs/reference/contact-center-routing.md +1138 -0
  65. wxcli/_playbook/docs/reference/devices-core.md +1869 -0
  66. wxcli/_playbook/docs/reference/devices-dect.md +1150 -0
  67. wxcli/_playbook/docs/reference/devices-platform.md +467 -0
  68. wxcli/_playbook/docs/reference/devices-workspaces.md +1426 -0
  69. wxcli/_playbook/docs/reference/emergency-services.md +1122 -0
  70. wxcli/_playbook/docs/reference/location-calling-core.md +2037 -0
  71. wxcli/_playbook/docs/reference/location-calling-media.md +1334 -0
  72. wxcli/_playbook/docs/reference/location-recording-advanced.md +1482 -0
  73. wxcli/_playbook/docs/reference/meetings-content.md +473 -0
  74. wxcli/_playbook/docs/reference/meetings-core.md +903 -0
  75. wxcli/_playbook/docs/reference/meetings-infrastructure.md +899 -0
  76. wxcli/_playbook/docs/reference/meetings-settings.md +850 -0
  77. wxcli/_playbook/docs/reference/messaging-bots.md +1091 -0
  78. wxcli/_playbook/docs/reference/messaging-spaces.md +695 -0
  79. wxcli/_playbook/docs/reference/person-call-settings-behavior.md +1639 -0
  80. wxcli/_playbook/docs/reference/person-call-settings-handling.md +1394 -0
  81. wxcli/_playbook/docs/reference/person-call-settings-media.md +1898 -0
  82. wxcli/_playbook/docs/reference/person-call-settings-permissions.md +1329 -0
  83. wxcli/_playbook/docs/reference/provisioning.md +1366 -0
  84. wxcli/_playbook/docs/reference/reporting-analytics.md +1318 -0
  85. wxcli/_playbook/docs/reference/self-service-call-settings.md +1020 -0
  86. wxcli/_playbook/docs/reference/virtual-lines.md +1132 -0
  87. wxcli/_playbook/docs/reference/webhooks-events.md +1444 -0
  88. wxcli/_playbook/docs/reference/wxcadm-xsi-realtime.md +953 -0
  89. wxcli/_version.py +24 -0
  90. wxcli/auth.py +137 -0
  91. wxcli/commands/__init__.py +0 -0
  92. wxcli/commands/_registry.py +181 -0
  93. wxcli/commands/activation_email.py +103 -0
  94. wxcli/commands/admin_recordings.py +585 -0
  95. wxcli/commands/analytics.py +105 -0
  96. wxcli/commands/announcement_playlists.py +219 -0
  97. wxcli/commands/announcements.py +519 -0
  98. wxcli/commands/archive_users.py +36 -0
  99. wxcli/commands/attachment_actions.py +60 -0
  100. wxcli/commands/audit_events.py +83 -0
  101. wxcli/commands/authorizations.py +113 -0
  102. wxcli/commands/auto_attendant.py +642 -0
  103. wxcli/commands/broadworks_billing_reports.py +126 -0
  104. wxcli/commands/broadworks_enterprises.py +160 -0
  105. wxcli/commands/broadworks_subscribers.py +319 -0
  106. wxcli/commands/broadworks_workspaces.py +108 -0
  107. wxcli/commands/call_controls.py +1304 -0
  108. wxcli/commands/call_park.py +494 -0
  109. wxcli/commands/call_pickup.py +229 -0
  110. wxcli/commands/call_queue.py +1878 -0
  111. wxcli/commands/call_recording.py +707 -0
  112. wxcli/commands/call_routing.py +1610 -0
  113. wxcli/commands/call_settings_for_me_phase_5.py +212 -0
  114. wxcli/commands/caller_reputation.py +169 -0
  115. wxcli/commands/calling_service.py +305 -0
  116. wxcli/commands/cc_address_book.py +770 -0
  117. wxcli/commands/cc_agent_greetings.py +242 -0
  118. wxcli/commands/cc_agent_summaries.py +39 -0
  119. wxcli/commands/cc_agent_wellbeing.py +216 -0
  120. wxcli/commands/cc_agents.py +425 -0
  121. wxcli/commands/cc_ai_assistant.py +55 -0
  122. wxcli/commands/cc_ai_feature.py +294 -0
  123. wxcli/commands/cc_audio_files.py +149 -0
  124. wxcli/commands/cc_auto_csat.py +311 -0
  125. wxcli/commands/cc_aux_code.py +458 -0
  126. wxcli/commands/cc_business_hour.py +353 -0
  127. wxcli/commands/cc_call_monitoring.py +228 -0
  128. wxcli/commands/cc_callbacks.py +194 -0
  129. wxcli/commands/cc_campaign.py +212 -0
  130. wxcli/commands/cc_captures.py +39 -0
  131. wxcli/commands/cc_contact_list.py +169 -0
  132. wxcli/commands/cc_contact_number.py +295 -0
  133. wxcli/commands/cc_data_sources.py +235 -0
  134. wxcli/commands/cc_desktop_layout.py +380 -0
  135. wxcli/commands/cc_desktop_profile.py +322 -0
  136. wxcli/commands/cc_dial_number.py +511 -0
  137. wxcli/commands/cc_dial_plan.py +347 -0
  138. wxcli/commands/cc_dnc.py +101 -0
  139. wxcli/commands/cc_entry_point.py +545 -0
  140. wxcli/commands/cc_ewt.py +51 -0
  141. wxcli/commands/cc_flow.py +477 -0
  142. wxcli/commands/cc_global_vars.py +430 -0
  143. wxcli/commands/cc_holiday_list.py +335 -0
  144. wxcli/commands/cc_journey.py +1261 -0
  145. wxcli/commands/cc_legacy_flows.py +49 -0
  146. wxcli/commands/cc_multimedia_profile.py +436 -0
  147. wxcli/commands/cc_notification.py +51 -0
  148. wxcli/commands/cc_outdial_ani.py +604 -0
  149. wxcli/commands/cc_overrides.py +341 -0
  150. wxcli/commands/cc_queue.py +1083 -0
  151. wxcli/commands/cc_queue_stats.py +55 -0
  152. wxcli/commands/cc_realtime.py +51 -0
  153. wxcli/commands/cc_resource_collection.py +312 -0
  154. wxcli/commands/cc_search.py +46 -0
  155. wxcli/commands/cc_site.py +400 -0
  156. wxcli/commands/cc_skill.py +350 -0
  157. wxcli/commands/cc_skill_profile.py +289 -0
  158. wxcli/commands/cc_subscriptions.py +426 -0
  159. wxcli/commands/cc_summaries.py +130 -0
  160. wxcli/commands/cc_tasks.py +844 -0
  161. wxcli/commands/cc_team.py +325 -0
  162. wxcli/commands/cc_user_profiles.py +349 -0
  163. wxcli/commands/cc_users.py +701 -0
  164. wxcli/commands/cc_work_types.py +363 -0
  165. wxcli/commands/cdr.py +89 -0
  166. wxcli/commands/classifications.py +38 -0
  167. wxcli/commands/cleanup.py +1427 -0
  168. wxcli/commands/client_settings.py +72 -0
  169. wxcli/commands/conference.py +328 -0
  170. wxcli/commands/configure.py +72 -0
  171. wxcli/commands/converged_recordings.py +347 -0
  172. wxcli/commands/converged_recordings_export.py +310 -0
  173. wxcli/commands/cq_playlists.py +42 -0
  174. wxcli/commands/cucm.py +2794 -0
  175. wxcli/commands/cucm_config.py +129 -0
  176. wxcli/commands/customer_assist.py +373 -0
  177. wxcli/commands/data_sources.py +227 -0
  178. wxcli/commands/dect_devices.py +787 -0
  179. wxcli/commands/device_configurations.py +77 -0
  180. wxcli/commands/device_dynamic_settings.py +320 -0
  181. wxcli/commands/device_settings.py +1489 -0
  182. wxcli/commands/devices.py +280 -0
  183. wxcli/commands/domains.py +142 -0
  184. wxcli/commands/ecm.py +178 -0
  185. wxcli/commands/emergency_services.py +827 -0
  186. wxcli/commands/events.py +83 -0
  187. wxcli/commands/external_voicemail.py +52 -0
  188. wxcli/commands/groups.py +206 -0
  189. wxcli/commands/guest_management.py +76 -0
  190. wxcli/commands/hds.py +340 -0
  191. wxcli/commands/hot_desk.py +67 -0
  192. wxcli/commands/hot_desking_members.py +118 -0
  193. wxcli/commands/hot_desking_portal.py +124 -0
  194. wxcli/commands/hunt_group.py +577 -0
  195. wxcli/commands/hybrid_clusters.py +71 -0
  196. wxcli/commands/hybrid_connectors.py +67 -0
  197. wxcli/commands/identity_org.py +159 -0
  198. wxcli/commands/init_playbook.py +155 -0
  199. wxcli/commands/licenses.py +106 -0
  200. wxcli/commands/live_monitoring.py +40 -0
  201. wxcli/commands/location_call_handling.py +577 -0
  202. wxcli/commands/location_schedules.py +341 -0
  203. wxcli/commands/location_settings.py +1297 -0
  204. wxcli/commands/location_voicemail.py +494 -0
  205. wxcli/commands/locations.py +336 -0
  206. wxcli/commands/meeting_captions.py +110 -0
  207. wxcli/commands/meeting_chats.py +63 -0
  208. wxcli/commands/meeting_invitees.py +234 -0
  209. wxcli/commands/meeting_messages.py +28 -0
  210. wxcli/commands/meeting_participants.py +278 -0
  211. wxcli/commands/meeting_polls.py +111 -0
  212. wxcli/commands/meeting_preferences.py +515 -0
  213. wxcli/commands/meeting_qa.py +78 -0
  214. wxcli/commands/meeting_qualities.py +43 -0
  215. wxcli/commands/meeting_reports.py +101 -0
  216. wxcli/commands/meeting_session_types.py +105 -0
  217. wxcli/commands/meeting_site.py +57 -0
  218. wxcli/commands/meeting_slido.py +44 -0
  219. wxcli/commands/meeting_summaries.py +92 -0
  220. wxcli/commands/meeting_tracking_codes.py +233 -0
  221. wxcli/commands/meeting_transcripts.py +230 -0
  222. wxcli/commands/meetings.py +1997 -0
  223. wxcli/commands/memberships.py +164 -0
  224. wxcli/commands/messages.py +213 -0
  225. wxcli/commands/mode_management.py +244 -0
  226. wxcli/commands/my_call_settings.py +3577 -0
  227. wxcli/commands/numbers.py +405 -0
  228. wxcli/commands/operating_modes.py +410 -0
  229. wxcli/commands/org_contacts.py +284 -0
  230. wxcli/commands/org_health_cli.py +55 -0
  231. wxcli/commands/org_settings.py +71 -0
  232. wxcli/commands/organizations.py +83 -0
  233. wxcli/commands/paging_group.py +257 -0
  234. wxcli/commands/partner_admins.py +141 -0
  235. wxcli/commands/partner_reports.py +188 -0
  236. wxcli/commands/partner_tags.py +216 -0
  237. wxcli/commands/people.py +279 -0
  238. wxcli/commands/person_call_settings.py +71 -0
  239. wxcli/commands/pstn.py +280 -0
  240. wxcli/commands/recording_report.py +154 -0
  241. wxcli/commands/report_templates.py +38 -0
  242. wxcli/commands/reports.py +144 -0
  243. wxcli/commands/resource_group_memberships.py +160 -0
  244. wxcli/commands/resource_groups.py +67 -0
  245. wxcli/commands/roles.py +63 -0
  246. wxcli/commands/room_tabs.py +160 -0
  247. wxcli/commands/rooms.py +225 -0
  248. wxcli/commands/scim_bulk.py +46 -0
  249. wxcli/commands/scim_groups.py +246 -0
  250. wxcli/commands/scim_schemas.py +82 -0
  251. wxcli/commands/scim_users.py +283 -0
  252. wxcli/commands/security_audit.py +54 -0
  253. wxcli/commands/service_apps.py +51 -0
  254. wxcli/commands/single_number_reach.py +209 -0
  255. wxcli/commands/team_memberships.py +155 -0
  256. wxcli/commands/teams.py +153 -0
  257. wxcli/commands/ucm_profile.py +42 -0
  258. wxcli/commands/update.py +219 -0
  259. wxcli/commands/user_settings.py +5116 -0
  260. wxcli/commands/video_mesh.py +1090 -0
  261. wxcli/commands/virtual_extensions.py +502 -0
  262. wxcli/commands/virtual_line_settings.py +2072 -0
  263. wxcli/commands/webhooks.py +176 -0
  264. wxcli/commands/wholesale_billing_reports.py +147 -0
  265. wxcli/commands/wholesale_provisioning.py +523 -0
  266. wxcli/commands/workspace_locations.py +339 -0
  267. wxcli/commands/workspace_metrics.py +103 -0
  268. wxcli/commands/workspace_personalization.py +70 -0
  269. wxcli/commands/workspace_settings.py +3347 -0
  270. wxcli/commands/workspaces.py +279 -0
  271. wxcli/commands/xapi.py +114 -0
  272. wxcli/config.py +139 -0
  273. wxcli/errors.py +77 -0
  274. wxcli/main.py +210 -0
  275. wxcli/migration/CLAUDE.md +106 -0
  276. wxcli/migration/__init__.py +1 -0
  277. wxcli/migration/advisory/CLAUDE.md +196 -0
  278. wxcli/migration/advisory/__init__.py +46 -0
  279. wxcli/migration/advisory/advisor.py +107 -0
  280. wxcli/migration/advisory/advisory_patterns.py +2552 -0
  281. wxcli/migration/advisory/recommendation_rules.py +835 -0
  282. wxcli/migration/cucm/CLAUDE.md +74 -0
  283. wxcli/migration/cucm/__init__.py +5 -0
  284. wxcli/migration/cucm/connection.py +265 -0
  285. wxcli/migration/cucm/discovery.py +225 -0
  286. wxcli/migration/cucm/extractors/__init__.py +1 -0
  287. wxcli/migration/cucm/extractors/announcements.py +92 -0
  288. wxcli/migration/cucm/extractors/base.py +90 -0
  289. wxcli/migration/cucm/extractors/device_profiles.py +98 -0
  290. wxcli/migration/cucm/extractors/devices.py +193 -0
  291. wxcli/migration/cucm/extractors/e911.py +103 -0
  292. wxcli/migration/cucm/extractors/features.py +309 -0
  293. wxcli/migration/cucm/extractors/helpers.py +73 -0
  294. wxcli/migration/cucm/extractors/informational.py +295 -0
  295. wxcli/migration/cucm/extractors/locations.py +221 -0
  296. wxcli/migration/cucm/extractors/moh.py +100 -0
  297. wxcli/migration/cucm/extractors/remote_destinations.py +96 -0
  298. wxcli/migration/cucm/extractors/routing.py +493 -0
  299. wxcli/migration/cucm/extractors/shared_lines.py +146 -0
  300. wxcli/migration/cucm/extractors/templates.py +229 -0
  301. wxcli/migration/cucm/extractors/tier4.py +173 -0
  302. wxcli/migration/cucm/extractors/users.py +240 -0
  303. wxcli/migration/cucm/extractors/voicemail.py +243 -0
  304. wxcli/migration/cucm/extractors/workspaces.py +88 -0
  305. wxcli/migration/cucm/unity_connection.py +304 -0
  306. wxcli/migration/execute/CLAUDE.md +372 -0
  307. wxcli/migration/execute/__init__.py +303 -0
  308. wxcli/migration/execute/batch.py +277 -0
  309. wxcli/migration/execute/dependency.py +483 -0
  310. wxcli/migration/execute/engine.py +964 -0
  311. wxcli/migration/execute/handlers.py +2232 -0
  312. wxcli/migration/execute/planner.py +1939 -0
  313. wxcli/migration/execute/runtime.py +571 -0
  314. wxcli/migration/export/CLAUDE.md +49 -0
  315. wxcli/migration/export/__init__.py +8 -0
  316. wxcli/migration/export/csv_export.py +126 -0
  317. wxcli/migration/export/deployment_plan.py +479 -0
  318. wxcli/migration/export/json_export.py +60 -0
  319. wxcli/migration/models.py +941 -0
  320. wxcli/migration/phone_models.py +50 -0
  321. wxcli/migration/preflight/CLAUDE.md +52 -0
  322. wxcli/migration/preflight/__init__.py +89 -0
  323. wxcli/migration/preflight/checks.py +911 -0
  324. wxcli/migration/preflight/runner.py +293 -0
  325. wxcli/migration/rate_limiter.py +144 -0
  326. wxcli/migration/report/CLAUDE.md +245 -0
  327. wxcli/migration/report/__init__.py +7 -0
  328. wxcli/migration/report/appendix.py +2437 -0
  329. wxcli/migration/report/assembler.py +183 -0
  330. wxcli/migration/report/charts.py +263 -0
  331. wxcli/migration/report/executive.py +776 -0
  332. wxcli/migration/report/explainer.py +704 -0
  333. wxcli/migration/report/helpers.py +74 -0
  334. wxcli/migration/report/ingest.py +152 -0
  335. wxcli/migration/report/notice_templates.py +192 -0
  336. wxcli/migration/report/score.py +375 -0
  337. wxcli/migration/report/styles.py +1052 -0
  338. wxcli/migration/report/user_diff.py +1052 -0
  339. wxcli/migration/report/user_notice.py +425 -0
  340. wxcli/migration/state.py +139 -0
  341. wxcli/migration/store.py +860 -0
  342. wxcli/migration/transform/CLAUDE.md +107 -0
  343. wxcli/migration/transform/__init__.py +12 -0
  344. wxcli/migration/transform/analysis_pipeline.py +453 -0
  345. wxcli/migration/transform/analyzers/__init__.py +142 -0
  346. wxcli/migration/transform/analyzers/css_permission.py +189 -0
  347. wxcli/migration/transform/analyzers/css_routing.py +335 -0
  348. wxcli/migration/transform/analyzers/device_compatibility.py +122 -0
  349. wxcli/migration/transform/analyzers/dn_ambiguity.py +131 -0
  350. wxcli/migration/transform/analyzers/duplicate_user.py +221 -0
  351. wxcli/migration/transform/analyzers/extension_conflict.py +173 -0
  352. wxcli/migration/transform/analyzers/feature_approximation.py +227 -0
  353. wxcli/migration/transform/analyzers/layout_overflow.py +174 -0
  354. wxcli/migration/transform/analyzers/location_ambiguity.py +184 -0
  355. wxcli/migration/transform/analyzers/missing_data.py +300 -0
  356. wxcli/migration/transform/analyzers/selective_call_handling.py +394 -0
  357. wxcli/migration/transform/analyzers/shared_line.py +170 -0
  358. wxcli/migration/transform/analyzers/voicemail_compatibility.py +267 -0
  359. wxcli/migration/transform/analyzers/workspace_license.py +212 -0
  360. wxcli/migration/transform/cross_reference.py +1136 -0
  361. wxcli/migration/transform/cucm_pattern.py +246 -0
  362. wxcli/migration/transform/decisions.py +301 -0
  363. wxcli/migration/transform/e164.py +145 -0
  364. wxcli/migration/transform/engine.py +256 -0
  365. wxcli/migration/transform/mappers/CLAUDE.md +123 -0
  366. wxcli/migration/transform/mappers/__init__.py +76 -0
  367. wxcli/migration/transform/mappers/announcement_mapper.py +122 -0
  368. wxcli/migration/transform/mappers/base.py +190 -0
  369. wxcli/migration/transform/mappers/button_template_mapper.py +186 -0
  370. wxcli/migration/transform/mappers/call_forwarding_mapper.py +228 -0
  371. wxcli/migration/transform/mappers/call_settings_mapper.py +144 -0
  372. wxcli/migration/transform/mappers/css_mapper.py +868 -0
  373. wxcli/migration/transform/mappers/dect_mapper.py +367 -0
  374. wxcli/migration/transform/mappers/device_layout_mapper.py +289 -0
  375. wxcli/migration/transform/mappers/device_mapper.py +227 -0
  376. wxcli/migration/transform/mappers/device_profile_mapper.py +190 -0
  377. wxcli/migration/transform/mappers/device_settings_mapper.py +464 -0
  378. wxcli/migration/transform/mappers/e911_mapper.py +129 -0
  379. wxcli/migration/transform/mappers/ecbn_mapper.py +263 -0
  380. wxcli/migration/transform/mappers/executive_assistant_mapper.py +156 -0
  381. wxcli/migration/transform/mappers/feature_mapper.py +1179 -0
  382. wxcli/migration/transform/mappers/line_mapper.py +310 -0
  383. wxcli/migration/transform/mappers/location_mapper.py +235 -0
  384. wxcli/migration/transform/mappers/moh_mapper.py +114 -0
  385. wxcli/migration/transform/mappers/monitoring_mapper.py +221 -0
  386. wxcli/migration/transform/mappers/receptionist_mapper.py +245 -0
  387. wxcli/migration/transform/mappers/routing_mapper.py +821 -0
  388. wxcli/migration/transform/mappers/snr_mapper.py +201 -0
  389. wxcli/migration/transform/mappers/softkey_mapper.py +205 -0
  390. wxcli/migration/transform/mappers/user_mapper.py +264 -0
  391. wxcli/migration/transform/mappers/voicemail_group_mapper.py +286 -0
  392. wxcli/migration/transform/mappers/voicemail_mapper.py +514 -0
  393. wxcli/migration/transform/mappers/workspace_mapper.py +464 -0
  394. wxcli/migration/transform/normalizers.py +2008 -0
  395. wxcli/migration/transform/pattern_converter.py +106 -0
  396. wxcli/migration/transform/pipeline.py +271 -0
  397. wxcli/migration/transform/rules.py +255 -0
  398. wxcli/org_health/CLAUDE.md +63 -0
  399. wxcli/org_health/__init__.py +7 -0
  400. wxcli/org_health/analyze.py +93 -0
  401. wxcli/org_health/checks.py +458 -0
  402. wxcli/org_health/collector.py +62 -0
  403. wxcli/org_health/models.py +78 -0
  404. wxcli/org_health/report.py +300 -0
  405. wxcli/output.py +101 -0
  406. wxcli-1.2.0.dist-info/METADATA +505 -0
  407. wxcli-1.2.0.dist-info/RECORD +413 -0
  408. wxcli-1.2.0.dist-info/WHEEL +5 -0
  409. wxcli-1.2.0.dist-info/entry_points.txt +2 -0
  410. wxcli-1.2.0.dist-info/licenses/LICENSE +191 -0
  411. wxcli-1.2.0.dist-info/scm_file_list.json +751 -0
  412. wxcli-1.2.0.dist-info/scm_version.json +8 -0
  413. wxcli-1.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1181 @@
1
+ ---
2
+ name: contact-center
3
+ description: |
4
+ Provision and manage Webex Contact Center resources using wxcli CLI commands:
5
+ agents, queues, entry points, teams, skills, flows, campaigns, dial plans,
6
+ dial numbers (DN-to-entry-point mapping), desktop profiles, CC sites, CC business hours,
7
+ CC holiday lists, and monitoring. Guides the user from prerequisites through
8
+ execution and verification.
9
+ Use for: create, update, delete, list, configure, or troubleshoot any CC resource.
10
+ NOT for: Webex Calling queues/hunt groups (use configure-features), Calling dial plans
11
+ (use configure-routing), or Calling schedules (use configure-features).
12
+ allowed-tools: Read, Grep, Glob, Bash
13
+ argument-hint: [cc-operation]
14
+ ---
15
+
16
+ # Contact Center Workflow
17
+
18
+ **Checkpoint — do NOT proceed until you can answer these:**
19
+ 1. What CLI command sets the CC API region? (Answer: `wxcli set-cc-region <region>` — defaults to `us1`. Valid regions: `us1`, `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1`.)
20
+ 2. What base URL do CC API calls target? (Answer: `api.wxcc-{region}.cisco.com`, not `webexapis.com`.)
21
+ 3. How do you verify CC auth is working? (Answer: `wxcli whoami` for token, then `wxcli cc-site list -o json` to confirm CC access.)
22
+
23
+ If you cannot answer all three, you skipped reading this skill. Go back and read it.
24
+
25
+ ## Step 1: Load references
26
+
27
+ 1. Read `docs/reference/contact-center-core.md` for agents, queues, entry points, teams, skills, desktop profiles, sites, aux codes, and configuration data models
28
+ 2. Read `docs/reference/contact-center-routing.md` for dial plans, campaigns, flows, audio files, contacts, outdial ANI
29
+ 3. Read `docs/reference/contact-center-analytics.md` for AI features, monitoring, subscriptions, tasks
30
+ 4. Read `docs/reference/contact-center-journey.md` for JDS: workspaces, persons, identity, profile views, events, WXCC subscription
31
+
32
+ **Mandatory --help verification:** Before constructing any wxcli command, run `wxcli <group> --help` to verify the subcommand exists, then `wxcli <group> <subcommand> --help` to verify the exact flags (e.g. `wxcli cc-queue create --help` — note the `cc-` prefix is what distinguishes Contact Center commands from Calling, so `cc-queue` ≠ `call-queue`; guessing the wrong one builds the wrong entity). Do NOT rely on examples in this skill or reference docs — the CLI is auto-generated and flag names may differ from what documentation suggests.
33
+
34
+ ## Step 2: Verify auth token and CC region
35
+
36
+ Before any API calls, confirm the user has a working auth token and CC region is configured:
37
+
38
+ ```bash
39
+ wxcli whoami
40
+ ```
41
+
42
+ If this fails, stop and resolve authentication first (`wxcli configure`).
43
+
44
+ ### Set CC region
45
+
46
+ CC commands target `api.wxcc-{region}.cisco.com`. The region must be set before any `cc-*` command:
47
+
48
+ ```bash
49
+ wxcli set-cc-region us1
50
+ ```
51
+
52
+ Valid regions: `us1`, `eu1`, `eu2`, `anz1`, `ca1`, `jp1`, `sg1`.
53
+
54
+ ### Verify CC access
55
+
56
+ After setting the region, confirm the token has CC admin access:
57
+
58
+ ```bash
59
+ wxcli cc-site list -o json
60
+ ```
61
+
62
+ If this returns 403, the token lacks CC-specific OAuth scopes. Required scopes:
63
+ - **Read**: `cjp:config_read`
64
+ - **Write**: `cjp:config_write`
65
+ - **JDS admin (Journey Data Service)**: `cjds:admin_org_read` and/or `cjds:admin_org_write` — required for `/admin/v1/api/...` JDS endpoints (workspace, person, template management). Standard `cjp:` scopes alone will not grant JDS admin access.
66
+
67
+ The user may need to re-authenticate with CC scopes enabled.
68
+
69
+ > **WARNING:** Personal access tokens (PATs) from developer.webex.com do NOT carry CC scopes, even for full admins. If you get 403 "Access denied - Client is forbidden access to the resource" with a `ccconfig_` tracking ID, the token lacks CC scopes. Two options:
70
+ >
71
+ > **Option A — OAuth Integration** (user-facing apps):
72
+ > 1. Create an OAuth integration at developer.webex.com with `cjp:config_read` and `cjp:config_write` scopes selected
73
+ > 2. Complete the OAuth authorization flow to get a token
74
+ > 3. Run `wxcli configure` with the new token
75
+ > 4. If you added scopes to an existing integration, you must re-authorize — old tokens don't pick up new scopes
76
+ >
77
+ > **Option B — Service App** (production automation, no interactive login):
78
+ > 1. Create a Service App at developer.webex.com with `cjp:config_read` and `cjp:config_write` scopes (all CC scopes work except `spark:applications_token` and `spark:kms`)
79
+ > 2. Have a Full Admin authorize the app in Control Hub → Management → Apps → Service Apps
80
+ > 3. Generate tokens in the developer portal (Access Token: 14-day, Refresh Token: 90-day)
81
+ > 4. Run `wxcli configure` with the access token
82
+
83
+ > **Note:** The CC API requires the bare UUID org ID (e.g., `a9527d60-...`), not the base64-encoded Spark ID (`Y2lzY29...`). The CLI handles this automatically via `get_cc_org_id()`, which decodes the Spark ID to extract the UUID. No manual conversion is needed.
84
+
85
+ ## Step 3: Identify the operation
86
+
87
+ Ask the user what they want to configure. Present this decision matrix if they are unsure:
88
+
89
+ ### Agent Management
90
+
91
+ | Need | Operation | CLI Group(s) |
92
+ |------|-----------|-------------|
93
+ | Manage agent state (login, logout, state changes) | Agent lifecycle | `cc-agents` |
94
+ | Configure agent greetings | Upload/assign greeting files | `cc-agent-greetings` |
95
+ | View agent summaries | Agent activity summaries | `cc-agent-summaries` |
96
+ | Agent wellbeing settings | Burnout/wellness config | `cc-agent-wellbeing` |
97
+ | Manage user profiles | Agent desktop/permissions profiles | `cc-user-profiles` |
98
+ | Manage CC users | CC user CRUD | `cc-users` |
99
+ | Update dynamic skills for users | Bulk update dynamic skill assignments | `cc-users` |
100
+ | List users by dynamic skill | Query users with a specific dynamic skill | `cc-users` |
101
+ | Reskill users | Reassign skill profiles to users | `cc-users` |
102
+
103
+ ### Queue & Routing
104
+
105
+ | Need | Operation | CLI Group(s) |
106
+ |------|-----------|-------------|
107
+ | Configure queues | Create/update/delete contact service queues | `cc-queue` |
108
+ | Query queues by skill/team/user | Skill-based routing queue lookups | `cc-queue` |
109
+ | Set up entry points | Inbound/outbound entry point CRUD | `cc-entry-point` |
110
+ | Configure dial plans | CC dial plan management | `cc-dial-plan` |
111
+ | Manage dial numbers | Number-to-entry-point mapping | `cc-dial-number` |
112
+ | Queue callbacks | Callback configuration | `cc-callbacks` |
113
+ | Estimated wait time | EWT config | `cc-ewt` |
114
+ | Queue overrides | Override routing rules | `cc-overrides` |
115
+
116
+ ### Campaign & Contacts
117
+
118
+ | Need | Operation | CLI Group(s) |
119
+ |------|-----------|-------------|
120
+ | Run outbound campaigns | Start/stop/update campaigns | `cc-campaign` |
121
+ | Manage contact lists | Upload/manage contact lists for campaigns | `cc-contact-list` |
122
+ | Manage contact numbers | Contact number validation/management | `cc-contact-number` |
123
+ | Do-not-call lists | DNC list management | `cc-dnc` |
124
+ | Outdial ANI | Configure outbound caller IDs | `cc-outdial-ani` |
125
+ | Capture management | Capture data config | `cc-captures` |
126
+
127
+ ### Configuration
128
+
129
+ | Need | Operation | CLI Group(s) |
130
+ |------|-----------|-------------|
131
+ | Manage sites | CC site CRUD | `cc-site` |
132
+ | Business hours | Business hours schedules | `cc-business-hour` |
133
+ | Holiday lists | Holiday schedule management | `cc-holiday-list` |
134
+ | Aux codes | Agent auxiliary/idle codes | `cc-aux-code` |
135
+ | Work types | Wrap-up/work type definitions | `cc-work-types` |
136
+ | Desktop layouts | Agent desktop UI layouts | `cc-desktop-layout` |
137
+ | Desktop profiles | Agent desktop config profiles | `cc-desktop-profile` |
138
+ | Multimedia profiles | Channel capacity profiles | `cc-multimedia-profile` |
139
+ | Global variables | Global flow variables | `cc-global-vars` |
140
+ | Skills | Skill definitions (routing attributes) | `cc-skill` |
141
+ | Skill profiles | Skill profile assignments | `cc-skill-profile` |
142
+ | Teams | CC team CRUD, agent assignment | `cc-team` |
143
+
144
+ ### Flows & Automation
145
+
146
+ | Need | Operation | CLI Group(s) |
147
+ |------|-----------|-------------|
148
+ | Manage flows | Export/publish/list flows | `cc-flow` |
149
+ | Data sources | External data source config | `cc-data-sources` |
150
+ | Audio files | Upload/manage IVR audio | `cc-audio-files` |
151
+ | Resource collections | Resource collection management | `cc-resource-collection` |
152
+
153
+ ### AI & Analytics
154
+
155
+ | Need | Operation | CLI Group(s) |
156
+ |------|-----------|-------------|
157
+ | AI assistant | Get AI-powered suggestions | `cc-ai-assistant` |
158
+ | AI features | Configure AI capabilities | `cc-ai-feature` |
159
+ | Auto CSAT | Automated satisfaction scoring | `cc-auto-csat` |
160
+ | Agent summaries (AI) | AI-generated call summaries | `cc-summaries` |
161
+ | Customer journey | Journey tracking, profiles, templates | `cc-journey` |
162
+
163
+ ### Monitoring & Events
164
+
165
+ | Need | Operation | CLI Group(s) |
166
+ |------|-----------|-------------|
167
+ | Call monitoring | Monitor/barge/coach live calls | `cc-call-monitoring` |
168
+ | Real-time stats | Real-time queue/agent statistics | `cc-realtime` |
169
+ | Queue statistics | Queue performance metrics | `cc-queue-stats` |
170
+ | Event subscriptions | Subscribe to CC events (webhooks) | `cc-subscriptions` |
171
+ | Task management | Agent task lifecycle (accept, hold, transfer, wrapup) | `cc-tasks` |
172
+ | Notifications | Notification management | `cc-notification` |
173
+ | Search | Search CC resources | `cc-search` |
174
+ | Address books | Address book management | `cc-address-book` |
175
+
176
+ ### Not Contact Center?
177
+
178
+ | Need | Redirect To |
179
+ |------|-------------|
180
+ | Webex Calling features (AA, CQ, HG) | `configure-features` skill |
181
+ | Person/workspace call settings | `manage-call-settings` skill |
182
+ | Webex Calling reporting (CDR) | `reporting` skill |
183
+ | Customer Assist on a Calling queue | `customer-assist` skill |
184
+ | Meetings | `manage-meetings` skill |
185
+
186
+ ## Step 4: Check prerequisites
187
+
188
+ Before creating any CC resource, verify these conditions:
189
+
190
+ ### 4a. CC tenant is provisioned
191
+
192
+ The org must have Webex Contact Center provisioned. Confirm with:
193
+
194
+ ```bash
195
+ wxcli cc-site list -o json
196
+ ```
197
+
198
+ If this returns empty or errors, the CC tenant is not provisioned. The user must provision CC through Control Hub first.
199
+
200
+ ### 4b. At least one site exists
201
+
202
+ Most CC resources are site-scoped. Confirm a site exists:
203
+
204
+ ```bash
205
+ wxcli cc-site list -o json
206
+ ```
207
+
208
+ If no sites exist, create one first:
209
+
210
+ ```bash
211
+ wxcli cc-site create --json-body '{
212
+ "name": "Main Site",
213
+ "multimediaProfileId": "PROFILE_ID"
214
+ }'
215
+ ```
216
+
217
+ ### 4c. Resource-specific prerequisites
218
+
219
+ #### Queues
220
+
221
+ | Prerequisite | Verification | If missing |
222
+ |-------------|-------------|-----------|
223
+ | Entry point exists | `wxcli cc-entry-point list-entry-point -o json` | Create entry point first |
224
+ | Team exists (for team-based routing) | `wxcli cc-team list -o json` | Create team first |
225
+ | Skill profiles (for skill-based routing) | `wxcli cc-skill-profile list-skill-profile -o json` | Create skills and skill profiles first |
226
+
227
+ #### Teams
228
+
229
+ | Prerequisite | Verification | If missing |
230
+ |-------------|-------------|-----------|
231
+ | Site exists | `wxcli cc-site list -o json` | Create site first |
232
+ | Multimedia profile exists | `wxcli cc-multimedia-profile list-multimedia-profile -o json` | Create multimedia profile first |
233
+ | Skill profile (optional) | `wxcli cc-skill-profile list-skill-profile -o json` | Create if using skill-based routing |
234
+
235
+ #### Campaigns
236
+
237
+ | Prerequisite | Verification | If missing |
238
+ |-------------|-------------|-----------|
239
+ | Contact list uploaded | `wxcli cc-contact-list list -o json` | Upload contact list first |
240
+ | Outdial ANI configured | `wxcli cc-outdial-ani list -o json` | Configure outbound caller ID first |
241
+ | Entry point exists (outbound) | `wxcli cc-entry-point list-entry-point -o json` | Create outbound entry point |
242
+
243
+ #### Flows
244
+
245
+ | Prerequisite | Verification | If missing |
246
+ |-------------|-------------|-----------|
247
+ | Audio files uploaded (if used in flow) | `wxcli cc-audio-files list-audio-file -o json` | Upload audio files first |
248
+ | Global variables defined (if used) | `wxcli cc-global-vars list-cad-variable -o json` | Create global variables first |
249
+
250
+ #### Skill Profiles
251
+
252
+ | Prerequisite | Verification | If missing |
253
+ |-------------|-------------|-----------|
254
+ | Skills defined | `wxcli cc-skill list-skill -o json` | Create skill definitions first |
255
+
256
+ #### Desktop Profiles
257
+
258
+ | Prerequisite | Verification | If missing |
259
+ |-------------|-------------|-----------|
260
+ | Desktop layout exists | `wxcli cc-desktop-layout list -o json` | Create or use default layout (note: `list` is the correct list-all for desktop layouts) |
261
+
262
+ #### Event Subscriptions
263
+
264
+ | Prerequisite | Verification | If missing |
265
+ |-------------|-------------|-----------|
266
+ | Webhook URL accessible | N/A — verify externally | Set up a webhook endpoint first |
267
+
268
+ ## Step 5: Gather configuration and present deployment plan -- [SHOW BEFORE EXECUTING]
269
+
270
+ Based on the selected operation, collect the required parameters from the user. **Always present the plan before executing.**
271
+
272
+ ---
273
+
274
+ ### Queue (Contact Service Queue)
275
+
276
+ Collect from user:
277
+
278
+ | Parameter | Required | Notes |
279
+ |-----------|:--------:|-------|
280
+ | Name | Yes | Unique queue name |
281
+ | Channel type | Yes | `telephony`, `chat`, `email`, `social` |
282
+ | Routing type | No | `LONGEST_AVAILABLE_AGENT` (default), `SKILLS_BASED`, `BEST_AVAILABLE_AGENT` |
283
+ | Service level threshold | No | Seconds (default varies) |
284
+ | Max time in queue | No | Seconds before overflow |
285
+ | Overflow destination | No | Entry point or number for overflow |
286
+
287
+ **CLI command (v2 — preferred):**
288
+
289
+ ```bash
290
+ wxcli cc-queue create --json-body '{
291
+ "name": "Support Queue",
292
+ "channelType": "telephony",
293
+ "routingType": "LONGEST_AVAILABLE_AGENT"
294
+ }'
295
+ ```
296
+
297
+ **List queues:**
298
+
299
+ ```bash
300
+ wxcli cc-queue list-contact-service-queue-v2 -o json
301
+ ```
302
+
303
+ **Show specific queue:**
304
+
305
+ ```bash
306
+ wxcli cc-queue show-contact-service-queue-v2 QUEUE_ID -o json
307
+ ```
308
+
309
+ #### Queue Skill-Based Routing Queries
310
+
311
+ These commands query queues based on skill, team, or user assignments. Useful for verifying routing configuration and debugging skill-based queue assignments.
312
+
313
+ **List queues assigned to a specific team:**
314
+
315
+ ```bash
316
+ wxcli cc-queue list-team-based-queues TEAM_ID -o json
317
+ ```
318
+
319
+ **List queues for a CI user:**
320
+
321
+ ```bash
322
+ wxcli cc-queue list-agent-based-queues USER_CI_ID -o json
323
+ ```
324
+
325
+ **List skill-based queues by CI user:**
326
+
327
+ ```bash
328
+ wxcli cc-queue list-agent-based-queues USER_CI_ID -o json
329
+ ```
330
+
331
+ **List queues by skill profile:**
332
+
333
+ ```bash
334
+ wxcli cc-queue list-skill-based-queues SKILL_PROFILE_ID -o json
335
+ ```
336
+
337
+ **Fetch queues by dynamic skill and skill profile (POST):**
338
+
339
+ ```bash
340
+ wxcli cc-queue create-fetch-by-dynamic-skills-and-skill-profile --json-body '{
341
+ "dynamicSkillIds": ["SKILL_ID"],
342
+ "skillProfileId": "SKILL_PROFILE_ID"
343
+ }'
344
+ ```
345
+
346
+ **Fetch queues by user ID and skill profile ID (POST):**
347
+
348
+ ```bash
349
+ wxcli cc-queue create-fetch-by-user-id-skill-profile-id --json-body '{
350
+ "userId": "USER_ID",
351
+ "skillProfileId": "SKILL_PROFILE_ID"
352
+ }'
353
+ ```
354
+
355
+ **Fetch queues by grouped assistant skill (v2, POST):**
356
+
357
+ ```bash
358
+ wxcli cc-queue create-fetch-by-grouped-assistant-skill --json-body '{
359
+ "skillIds": ["SKILL_ID"]
360
+ }'
361
+ ```
362
+
363
+ ---
364
+
365
+ ### Entry Point
366
+
367
+ Collect from user:
368
+
369
+ | Parameter | Required | Notes |
370
+ |-----------|:--------:|-------|
371
+ | Name | Yes | Unique entry point name |
372
+ | Channel type | Yes | `telephony`, `chat`, `email`, `social` |
373
+ | Service level threshold | No | Seconds |
374
+ | Flow ID | No | Assigned flow for routing |
375
+
376
+ **CLI command (v2 — preferred):**
377
+
378
+ ```bash
379
+ wxcli cc-entry-point create --json-body '{
380
+ "name": "Main IVR",
381
+ "channelType": "telephony"
382
+ }'
383
+ ```
384
+
385
+ **List entry points:**
386
+
387
+ ```bash
388
+ wxcli cc-entry-point list-entry-point -o json
389
+ ```
390
+
391
+ **Show specific entry point:**
392
+
393
+ ```bash
394
+ wxcli cc-entry-point show ENTRY_POINT_ID -o json
395
+ ```
396
+
397
+ ---
398
+
399
+ ### Team
400
+
401
+ Collect from user:
402
+
403
+ | Parameter | Required | Notes |
404
+ |-----------|:--------:|-------|
405
+ | Name | Yes | Unique team name |
406
+ | Site ID | Yes | From `wxcli cc-site list` |
407
+ | Multimedia profile ID | No | Channel capacity assignment |
408
+ | Skill profile ID | No | For skill-based routing |
409
+ | Desktop profile ID | No | Agent desktop config |
410
+
411
+ **CLI command:**
412
+
413
+ ```bash
414
+ wxcli cc-team create --json-body '{
415
+ "name": "Support Team",
416
+ "siteId": "SITE_ID",
417
+ "multimediaProfileId": "MM_PROFILE_ID"
418
+ }'
419
+ ```
420
+
421
+ **List teams:**
422
+
423
+ ```bash
424
+ wxcli cc-team list -o json
425
+ ```
426
+
427
+ **Show specific team:**
428
+
429
+ ```bash
430
+ wxcli cc-team show TEAM_ID -o json
431
+ ```
432
+
433
+ ---
434
+
435
+ ### CC Users
436
+
437
+ **List CC users:**
438
+
439
+ ```bash
440
+ wxcli cc-users list -o json
441
+ ```
442
+
443
+ **Show a CC user:**
444
+
445
+ ```bash
446
+ wxcli cc-users show USER_ID -o json
447
+ ```
448
+
449
+ **Bulk update dynamic skill for users:**
450
+
451
+ ```bash
452
+ wxcli cc-users update-dynamic-skill --json-body '{
453
+ "userIds": ["USER_ID_1", "USER_ID_2"],
454
+ "dynamicSkillId": "SKILL_ID",
455
+ "skillValue": 8
456
+ }'
457
+ ```
458
+
459
+ **List users with a specific dynamic skill:**
460
+
461
+ ```bash
462
+ wxcli cc-users show-by-dynamic-skill-id DYNAMIC_SKILL_ID -o json
463
+ ```
464
+
465
+ **Reassign skill profiles to a user (reskill):**
466
+
467
+ ```bash
468
+ wxcli cc-users update-reskill --json-body '{
469
+ "userId": "USER_ID",
470
+ "skillProfileId": "NEW_SKILL_PROFILE_ID"
471
+ }'
472
+ ```
473
+
474
+ ---
475
+
476
+ ### Skill & Skill Profile
477
+
478
+ **Create a skill definition:**
479
+
480
+ ```bash
481
+ wxcli cc-skill create --json-body '{
482
+ "name": "Spanish",
483
+ "skillType": "PROFICIENCY",
484
+ "description": "Spanish language proficiency"
485
+ }'
486
+ ```
487
+
488
+ Skill types: `PROFICIENCY` (1-10 scale), `BOOLEAN` (true/false), `TEXT` (string match), `ENUM` (set of values).
489
+
490
+ **List skills:**
491
+
492
+ ```bash
493
+ wxcli cc-skill list-skill -o json
494
+ ```
495
+
496
+ **Create a skill profile:**
497
+
498
+ ```bash
499
+ wxcli cc-skill-profile create --json-body '{
500
+ "name": "Bilingual Agent",
501
+ "description": "English + Spanish",
502
+ "skills": [
503
+ {"skillId": "SKILL_ID", "skillValue": 8}
504
+ ]
505
+ }'
506
+ ```
507
+
508
+ **List skill profiles:**
509
+
510
+ ```bash
511
+ wxcli cc-skill-profile list-skill-profile -o json
512
+ ```
513
+
514
+ ---
515
+
516
+ ### Dial Plan & Dial Number
517
+
518
+ **Create a dial plan:**
519
+
520
+ ```bash
521
+ wxcli cc-dial-plan create --json-body '{
522
+ "name": "US Dial Plan",
523
+ "description": "US domestic dialing rules"
524
+ }'
525
+ ```
526
+
527
+ **List dial plans:**
528
+
529
+ ```bash
530
+ wxcli cc-dial-plan list-dial-plan -o json
531
+ ```
532
+
533
+ > **NOTE:** `cc-dial-plan list` is a references endpoint (shows what references a specific dial plan), not a list-all. Always use `list-dial-plan-v2` to list all dial plans.
534
+
535
+ **Map a dial number to an entry point:**
536
+
537
+ ```bash
538
+ wxcli cc-dial-number create --json-body '{
539
+ "dialNumber": "+18005551234",
540
+ "entryPointId": "ENTRY_POINT_ID"
541
+ }'
542
+ ```
543
+
544
+ ---
545
+
546
+ ### Business Hours & Holidays
547
+
548
+ **Create business hours:**
549
+
550
+ ```bash
551
+ wxcli cc-business-hour create --json-body '{
552
+ "name": "Standard Hours",
553
+ "timezone": "America/New_York",
554
+ "businessHours": [
555
+ {"day": "monday", "startTime": "08:00", "endTime": "17:00"},
556
+ {"day": "tuesday", "startTime": "08:00", "endTime": "17:00"},
557
+ {"day": "wednesday", "startTime": "08:00", "endTime": "17:00"},
558
+ {"day": "thursday", "startTime": "08:00", "endTime": "17:00"},
559
+ {"day": "friday", "startTime": "08:00", "endTime": "17:00"}
560
+ ]
561
+ }'
562
+ ```
563
+
564
+ **List business hours:**
565
+
566
+ ```bash
567
+ wxcli cc-business-hour list -o json
568
+ ```
569
+
570
+ **Create a holiday list:**
571
+
572
+ ```bash
573
+ wxcli cc-holiday-list create --json-body '{
574
+ "name": "US Holidays 2026",
575
+ "holidays": [
576
+ {"name": "New Year", "startDate": "2026-01-01", "endDate": "2026-01-01"},
577
+ {"name": "Memorial Day", "startDate": "2026-05-25", "endDate": "2026-05-25"}
578
+ ]
579
+ }'
580
+ ```
581
+
582
+ ---
583
+
584
+ ### Desktop Layout & Desktop Profile
585
+
586
+ **Create a desktop layout:**
587
+
588
+ ```bash
589
+ wxcli cc-desktop-layout create --json-body '{
590
+ "name": "Standard Layout",
591
+ "description": "Default agent desktop"
592
+ }'
593
+ ```
594
+
595
+ **List desktop layouts:**
596
+
597
+ ```bash
598
+ wxcli cc-desktop-layout list -o json
599
+ ```
600
+
601
+ **Create a desktop profile:**
602
+
603
+ ```bash
604
+ wxcli cc-desktop-profile create --json-body '{
605
+ "name": "Standard Profile",
606
+ "desktopLayoutId": "LAYOUT_ID"
607
+ }'
608
+ ```
609
+
610
+ **List desktop profiles:**
611
+
612
+ ```bash
613
+ wxcli cc-desktop-profile list-agent-profile -o json
614
+ ```
615
+
616
+ ---
617
+
618
+ ### Multimedia Profile
619
+
620
+ **Create a multimedia profile:**
621
+
622
+ ```bash
623
+ wxcli cc-multimedia-profile create --json-body '{
624
+ "name": "Voice Only",
625
+ "mediaTypes": [
626
+ {"media": "telephony", "maxCount": 1}
627
+ ]
628
+ }'
629
+ ```
630
+
631
+ **List multimedia profiles:**
632
+
633
+ ```bash
634
+ wxcli cc-multimedia-profile list-multimedia-profile -o json
635
+ ```
636
+
637
+ ---
638
+
639
+ ### Aux Codes & Work Types
640
+
641
+ **Create an aux code (idle/wrap-up code):**
642
+
643
+ ```bash
644
+ wxcli cc-aux-code create --json-body '{
645
+ "name": "Break",
646
+ "description": "Agent on break",
647
+ "isSystemCode": false
648
+ }'
649
+ ```
650
+
651
+ **List aux codes:**
652
+
653
+ ```bash
654
+ wxcli cc-aux-code list-auxiliary-code -o json
655
+ ```
656
+
657
+ **Create a work type:**
658
+
659
+ ```bash
660
+ wxcli cc-work-types create --json-body '{
661
+ "name": "Follow-up Call",
662
+ "description": "Post-call follow-up"
663
+ }'
664
+ ```
665
+
666
+ **List work types:**
667
+
668
+ ```bash
669
+ wxcli cc-work-types list-work-type -o json
670
+ ```
671
+
672
+ ---
673
+
674
+ ### Global Variables
675
+
676
+ **Create a global variable:**
677
+
678
+ ```bash
679
+ wxcli cc-global-vars create --json-body '{
680
+ "name": "maxRetries",
681
+ "variableType": "INTEGER",
682
+ "defaultValue": "3",
683
+ "description": "Max IVR retry attempts"
684
+ }'
685
+ ```
686
+
687
+ Variable types: `STRING`, `INTEGER`, `BOOLEAN`, `DECIMAL`, `DATE_TIME`, `JSON`.
688
+
689
+ **List global variables:**
690
+
691
+ ```bash
692
+ wxcli cc-global-vars list-cad-variable -o json
693
+ ```
694
+
695
+ ---
696
+
697
+ ### Flow Management
698
+
699
+ **List flows:**
700
+
701
+ ```bash
702
+ wxcli cc-flow list PROJECT_ID -o json
703
+ ```
704
+
705
+ **Export a flow:**
706
+
707
+ ```bash
708
+ wxcli cc-flow export FLOW_ID PROJECT_ID -o json
709
+ ```
710
+
711
+ Use `--version` to specify a version: `draft`, `latest`, or a specific version ID.
712
+
713
+ ```bash
714
+ wxcli cc-flow export FLOW_ID PROJECT_ID --version draft -o json
715
+ ```
716
+
717
+ **Publish a flow:**
718
+
719
+ ```bash
720
+ wxcli cc-flow publish FLOW_ID PROJECT_ID --comment "Initial publish"
721
+ ```
722
+
723
+ Use `--json-body` for additional publish options (e.g., tag IDs):
724
+
725
+ ```bash
726
+ wxcli cc-flow publish FLOW_ID PROJECT_ID --json-body '{
727
+ "comment": "Production release",
728
+ "tagIds": ["TAG_ID"]
729
+ }'
730
+ ```
731
+
732
+ > **NOTE:** Flow import (file upload) is not available via CLI. Use Control Hub or the API directly for flow import.
733
+
734
+ ---
735
+
736
+ ### JDS (Journey Data Service) — Flow Designer Integration
737
+
738
+ JDS tracks customer journey events. The two most common flow patterns are:
739
+
740
+ **1. Detect returning caller at flow entry**
741
+
742
+ Query JDS by CallerANI at the start of the flow using an HTTP Request node:
743
+
744
+ ```
745
+ Method: GET
746
+ URL: https://api.wxcc-{region}.cisco.com/admin/v1/api/person/workspace-id/{{CJDS_Workspace_ID}}/aliases/{{CallerANI}}
747
+ Authorization: Bearer {{cc_oauth_token}}
748
+ ```
749
+
750
+ - **200 + data array** → caller exists in JDS; check event history to determine if returning
751
+ - **NOT_FOUND** → first-time caller (no prior contacts)
752
+ - CallerANI must be E.164 with `+1` prefix — WXCC writes ANI that way, so `+19105551234`, not `9105551234`
753
+
754
+ **2. Post a custom event from a flow**
755
+
756
+ Use an HTTP Request node to record a business event (e.g., store verified, order looked up):
757
+
758
+ ```
759
+ Method: POST
760
+ URL: https://api.wxcc-{region}.cisco.com/publish/v1/api/event?workspaceId={{CJDS_Workspace_ID}}
761
+ Authorization: Bearer {{cc_oauth_token}}
762
+ Content-Type: application/json
763
+ ```
764
+
765
+ Body:
766
+ ```json
767
+ {
768
+ "id": "{{DialedDNIS}}-{{CallerANI}}",
769
+ "specversion": "1.0",
770
+ "type": "custom:your_event_type",
771
+ "source": "wxcc_flow",
772
+ "identity": "{{CallerANI}}",
773
+ "identitytype": "phone",
774
+ "datacontenttype": "application/json",
775
+ "data": {
776
+ "event": "your_event_type"
777
+ }
778
+ }
779
+ ```
780
+
781
+ > `workspaceId` goes on the query string — the body schema has no `workspaceId` field.
782
+ > The URL must be a full absolute URL — relative paths return HTTP 500.
783
+ > `id` must be unique per event (use a combination of flow variables to ensure uniqueness).
784
+ > A successful post returns `"Accepted for processing"` — JDS ingests asynchronously.
785
+
786
+ **Query events for a person (wxcli):**
787
+
788
+ ```bash
789
+ wxcli cc-journey show-workspace-id-events WORKSPACE_ID --identity "+19105551234" --filter "type=='custom:your_event_type'" -o json
790
+ ```
791
+
792
+ Filter uses RSQL syntax. Omit `--filter` to return all events for that identity.
793
+
794
+ ---
795
+
796
+ ### SCIM User Lookup from Flow Designer
797
+
798
+ Use this pattern to look up a Webex user's identity data (e.g. alternate phone number, userName, ID) from within a WxCC flow using HTTP Request nodes.
799
+
800
+ **Authentication:** The SCIM API (`/identity/scim/`) requires `identity:people_read` scope — separate from `spark-admin:people_read`. PATs expire after 12 hours. For production use an OAuth Integration or Service App with `identity:people_read` explicitly selected at developer.webex.com.
801
+
802
+ **Phone number types:** `work`, `mobile`, `fax`, `work_extension`, `alternate1`, `alternate2`
803
+
804
+ ---
805
+
806
+ **Node 1 — Search by alternate1 phone number (DNIS)**
807
+
808
+ Before this node, add a Set Variable node to strip the `+` from DNIS:
809
+
810
+ ```
811
+ Variable: DNIS
812
+ Expression: {{NewContact.DNIS | slice(1)}}
813
+ ```
814
+
815
+ > `| slice(1)` works in WxCC Flow Designer. `| replace("+", "%2B")` does NOT — `+` is a regex special character and fails silently. `.substring(1)` also does not work.
816
+
817
+ HTTP Request node config:
818
+ - **Method:** GET
819
+ - **URL:** `https://webexapis.com/identity/scim/{orgId}/v2/Users`
820
+ - **Header:** `Authorization: Bearer {token}`
821
+ - **Query param key:** `filter`
822
+ - **Query param value:** `phoneNumbers%5Btype%20eq%20%22alternate1%22%20and%20value%20eq%20%22%2B{{DNIS}}%22%5D`
823
+ - **Output variable:** `StoreUserPersonId` ← JSONPath: `$.Resources[0].id`
824
+
825
+ Decoded filter: `phoneNumbers[type eq "alternate1" and value eq "+19197010928"]`
826
+
827
+ Key syntax rules:
828
+ - No space before `[` — `phoneNumbers[...]` not `phoneNumbers [...]`
829
+ - `+` must be hardcoded as `%2B` in the filter — the SCIM server decodes bare `+` as a space, returning zero results
830
+ - `phoneNumbers.value eq "..."` dot notation returns 400 and is not implemented despite being documented
831
+
832
+ ---
833
+
834
+ **Node 2 — Get full user profile by ID**
835
+
836
+ HTTP Request node config:
837
+ - **Method:** GET
838
+ - **URL:** `https://webexapis.com/identity/scim/{orgId}/v2/Users/{{StoreUserPersonId}}`
839
+ - **Header:** `Authorization: Bearer {token}`
840
+ - **Query param:** `attributes=id,userName,phoneNumbers` (optional — trims response)
841
+ - **Output variable:** `StoreExtension` ← JSONPath: `$.phoneNumbers[?(@.type=='alternate1')].value`
842
+
843
+ Response is the raw user object (no `Resources` wrapper), so JSONPath starts at `$.phoneNumbers` not `$.Resources[0].phoneNumbers`.
844
+
845
+ The `[?(@.type=='alternate1')]` filter expression is supported in WxCC Flow Designer's JSONPath parser.
846
+
847
+ ---
848
+
849
+ ### Auto CSAT
850
+
851
+ **Show Auto CSAT configuration:**
852
+
853
+ ```bash
854
+ wxcli cc-auto-csat show-auto-csat -o json
855
+ ```
856
+
857
+ **Update Auto CSAT settings:**
858
+
859
+ ```bash
860
+ wxcli cc-auto-csat update --json-body '{...}'
861
+ ```
862
+
863
+ **List Auto CSAT entries:**
864
+
865
+ ```bash
866
+ wxcli cc-auto-csat list -o json
867
+ ```
868
+
869
+ **List Auto CSAT questions:**
870
+
871
+ ```bash
872
+ wxcli cc-auto-csat list-question -o json
873
+ ```
874
+
875
+ ---
876
+
877
+ ### Call Monitoring
878
+
879
+ **Create a monitoring session:**
880
+
881
+ ```bash
882
+ wxcli cc-call-monitoring create --json-body '{
883
+ "taskId": "TASK_ID",
884
+ "agentId": "AGENT_ID"
885
+ }'
886
+ ```
887
+
888
+ **Barge into a call:**
889
+
890
+ ```bash
891
+ wxcli cc-call-monitoring create-barge-in --json-body '{
892
+ "taskId": "TASK_ID"
893
+ }'
894
+ ```
895
+
896
+ **List active monitoring sessions:**
897
+
898
+ ```bash
899
+ wxcli cc-call-monitoring list -o json
900
+ ```
901
+
902
+ **End a monitoring session:**
903
+
904
+ ```bash
905
+ wxcli cc-call-monitoring create-end --json-body '{
906
+ "taskId": "TASK_ID"
907
+ }'
908
+ ```
909
+
910
+ ---
911
+
912
+ ### Event Subscriptions
913
+
914
+ **Create a subscription:**
915
+
916
+ ```bash
917
+ wxcli cc-subscriptions create --json-body '{
918
+ "name": "Agent Events",
919
+ "eventTypes": ["AgentStateChange", "TaskRouted"],
920
+ "callbackUrl": "https://example.com/webhook"
921
+ }'
922
+ ```
923
+
924
+ **List subscriptions:**
925
+
926
+ ```bash
927
+ wxcli cc-subscriptions list -o json
928
+ ```
929
+
930
+ **List available event types:**
931
+
932
+ ```bash
933
+ wxcli cc-subscriptions list-event-types-v2 -o json
934
+ ```
935
+
936
+ ---
937
+
938
+ ### Task Management
939
+
940
+ **List tasks:**
941
+
942
+ ```bash
943
+ wxcli cc-tasks list -o json
944
+ ```
945
+
946
+ **Accept a task:**
947
+
948
+ ```bash
949
+ wxcli cc-tasks create-accept-tasks --json-body '{
950
+ "taskId": "TASK_ID"
951
+ }'
952
+ ```
953
+
954
+ **Transfer a task:**
955
+
956
+ ```bash
957
+ wxcli cc-tasks create-transfer-tasks --json-body '{
958
+ "taskId": "TASK_ID",
959
+ "destinationId": "QUEUE_OR_AGENT_ID"
960
+ }'
961
+ ```
962
+
963
+ **Wrap up a task:**
964
+
965
+ ```bash
966
+ wxcli cc-tasks create-wrapup --json-body '{
967
+ "taskId": "TASK_ID",
968
+ "auxCodeId": "AUX_CODE_ID"
969
+ }'
970
+ ```
971
+
972
+ **Hold/unhold a task:**
973
+
974
+ ```bash
975
+ wxcli cc-tasks create-hold --json-body '{"taskId": "TASK_ID"}'
976
+ wxcli cc-tasks create-unhold --json-body '{"taskId": "TASK_ID"}'
977
+ ```
978
+
979
+ ---
980
+
981
+ ### Deployment Plan Template
982
+
983
+ Before executing any commands, present the full plan to the user:
984
+
985
+ ```
986
+ DEPLOYMENT PLAN
987
+ ===============
988
+ Resource type: [queue / entry point / team / skill / flow / ...]
989
+ Operation: [create / update / delete]
990
+ Region: [us1 / eu1 / ...]
991
+
992
+ Configuration:
993
+ Name: [resource_name]
994
+ [Resource-specific settings listed here]
995
+
996
+ Dependencies:
997
+ ✓ Site exists: [site_name] ([site_id])
998
+ ✓ [Prerequisite 1]: [name] ([id])
999
+ ✓ [Prerequisite 2]: [name] ([id])
1000
+
1001
+ Commands to execute:
1002
+ wxcli cc-[group] [command] --json-body '{...}'
1003
+
1004
+ Proceed? (yes/no)
1005
+ ```
1006
+
1007
+ **Wait for user confirmation before executing.**
1008
+
1009
+ ## Step 6: Execute via wxcli
1010
+
1011
+ Run the command(s) from the approved deployment plan. If the operation requires multiple steps (e.g., create team then assign agents), execute them in order.
1012
+
1013
+ Handle errors explicitly:
1014
+
1015
+ ### Generic errors
1016
+
1017
+ - **401/403**: Token expired or insufficient scopes — run `wxcli configure` to re-authenticate. CC requires `cjp:config_read` / `cjp:config_write` scopes.
1018
+ - **403 with scope hint**: The CLI detects CC 403 errors and prints a scope tip. Follow the guidance.
1019
+ - **409**: Name conflict — ask user for alternate name.
1020
+ - **400**: Validation error — read the error message and fix the parameter.
1021
+ - **404**: Resource not found — verify the ID and region are correct.
1022
+
1023
+ ### CC-specific errors
1024
+
1025
+ - **Region mismatch**: If calls fail with connection errors, verify the region is correct: `wxcli set-cc-region <region>`. The CC API base URL is `api.wxcc-{region}.cisco.com`.
1026
+ - **orgId injection**: The CLI auto-injects `orgId` from the authenticated user's org. If operating on a partner-managed org, ensure `wxcli configure` has the correct org selected.
1027
+ - **v1 vs v2 endpoints**: Some CC groups have both v1 (bulk) and v2 (CRUD) endpoints. Prefer v2 commands (e.g., `list-contact-service-queue-v2` over `list`).
1028
+ - **Bulk operations**: v1 bulk endpoints (`create`, `list`) handle multiple resources at once. Use these for migrations or large-scale provisioning.
1029
+
1030
+ ## Step 7: Verify creation
1031
+
1032
+ After execution, fetch the resource back and confirm:
1033
+
1034
+ ```bash
1035
+ # Queue
1036
+ wxcli cc-queue show-contact-service-queue-v2 QUEUE_ID -o json
1037
+
1038
+ # Entry point
1039
+ wxcli cc-entry-point show ENTRY_POINT_ID -o json
1040
+
1041
+ # Team
1042
+ wxcli cc-team show TEAM_ID -o json
1043
+
1044
+ # Skill
1045
+ wxcli cc-skill show SKILL_ID -o json
1046
+
1047
+ # Skill profile
1048
+ wxcli cc-skill-profile show SKILL_PROFILE_ID -o json
1049
+
1050
+ # Site
1051
+ wxcli cc-site show SITE_ID -o json
1052
+
1053
+ # Dial plan
1054
+ wxcli cc-dial-plan show DIAL_PLAN_ID -o json
1055
+
1056
+ # Business hours
1057
+ wxcli cc-business-hour show BH_ID -o json
1058
+
1059
+ # Desktop profile
1060
+ wxcli cc-desktop-profile show PROFILE_ID -o json
1061
+
1062
+ # Multimedia profile
1063
+ wxcli cc-multimedia-profile show MM_PROFILE_ID -o json
1064
+
1065
+ # Global variable
1066
+ wxcli cc-global-vars show VAR_ID -o json
1067
+
1068
+ # Aux code
1069
+ wxcli cc-aux-code show AUX_ID -o json
1070
+
1071
+ # Subscription
1072
+ wxcli cc-subscriptions show SUBSCRIPTION_ID -o json
1073
+
1074
+ # CC user
1075
+ wxcli cc-users show USER_ID -o json
1076
+
1077
+ # Auto CSAT
1078
+ wxcli cc-auto-csat show-auto-csat -o json
1079
+ ```
1080
+
1081
+ ## Step 8: Report results
1082
+
1083
+ Present the results:
1084
+
1085
+ ```
1086
+ CC RESOURCE CONFIGURED
1087
+ ======================
1088
+ Type: [resource_type]
1089
+ Name: [name]
1090
+ ID: [resource_id]
1091
+ Region: [cc_region]
1092
+
1093
+ Configuration:
1094
+ [Key settings confirmed]
1095
+
1096
+ Next steps:
1097
+ - [Resource-specific next steps]
1098
+ - [e.g., "Assign flow to entry point"]
1099
+ - [e.g., "Add agents to team"]
1100
+ - [e.g., "Map dial number to entry point"]
1101
+ ```
1102
+
1103
+ ---
1104
+
1105
+ ## Critical Rules
1106
+
1107
+ 1. **Always set CC region first.** Before any `cc-*` command, ensure the region is set: `wxcli set-cc-region <region>`. CC API calls go to `api.wxcc-{region}.cisco.com`, not `webexapis.com`.
1108
+ 2. **CC requires separate OAuth scopes.** Standard Webex admin tokens don't include CC scopes. The user needs `cjp:config_read` and `cjp:config_write`. The CLI detects 403 and prints a scope tip.
1109
+ 3. **Always show the deployment plan** (Step 5) and wait for user confirmation before executing.
1110
+ 4. **Prefer v2 commands over v1.** v2 endpoints are CRUD-oriented (single resource). v1 endpoints are bulk-oriented (arrays). For individual creates/updates, use the v2 variant (e.g., `create-contact-service-queue-v2`, `list-entry-point-v2`).
1111
+ 5. **orgId is auto-injected.** The CLI resolves `orgId` from the authenticated user's org. No need to pass it manually.
1112
+ 6. **Most CC creates use `--json-body`.** CC resources have complex nested structures. Use `--json-body '{...}'` for creates and updates.
1113
+ 7. **Dependency order matters.** Create resources in this order: sites → skills → skill profiles → multimedia profiles → desktop layouts → desktop profiles → teams → entry points → queues → dial plans → dial numbers → flows.
1114
+ 8. **Delete in reverse dependency order.** When tearing down: flows → dial numbers → dial plans → queues → entry points → teams → desktop profiles → desktop layouts → multimedia profiles → skill profiles → skills → sites.
1115
+ 9. **Bulk operations for migrations.** For large-scale provisioning, use the v1 bulk endpoints (`cc-team create-bulk`, `cc-skill create-bulk`, `cc-site create-bulk`). These accept arrays of resources.
1116
+ 10. **Audio files must be uploaded before flow references.** If a flow references an audio prompt, upload it via `cc-audio-files` first.
1117
+ 11. **Campaign prerequisites are strict.** Campaigns require: contact list, outdial ANI, outbound entry point. Verify all three exist before starting a campaign.
1118
+ 12. **Task commands are real-time agent operations.** `cc-tasks` commands (accept, hold, transfer, wrapup) operate on live calls. Confirm with the user before executing.
1119
+ 13. **Monitoring is supervisor-only.** `cc-call-monitoring` commands require supervisor privileges. The authenticated user must have the CC supervisor role.
1120
+ 14. **Journey API is complex.** `cc-journey` has 41 commands across workspaces, templates, persons, identities, and subscriptions. Read `docs/reference/contact-center-journey.md` before using. Key gotchas: alias lookup is exact after stripping `+` (no country-code normalization); WXCC writes ANI in E.164 so lookups must use `+1` prefix; events are immutable (no delete); event filter uses RSQL syntax (`type=='custom:event_name'`); Publish API requires `workspaceId` as a query param not in the body. For posting events from Flow Designer, see `docs/reference/contact-center-routing.md` gotchas #16–18.
1121
+ 15. **Cross-skill handoffs:**
1122
+ - Webex Calling features (AA, CQ, HG) → `configure-features` skill
1123
+ - Customer Assist (CX Essentials on Calling queues) → `customer-assist` skill
1124
+ - Webex Calling reporting (CDR, queue stats) → `reporting` skill
1125
+ - Person/workspace call settings → `manage-call-settings` skill
1126
+ - Webex Calling routing (trunks, route groups, PSTN) → `configure-routing` skill (CC dial plans stay in this skill)
1127
+ - Location teardown → `teardown` skill
1128
+
1129
+ ---
1130
+
1131
+ ## Common Workflows
1132
+
1133
+ ### Workflow A: Set up a basic inbound voice queue
1134
+
1135
+ 1. Verify site exists → `wxcli cc-site list -o json`
1136
+ 2. Create multimedia profile → `wxcli cc-multimedia-profile create --json-body '...'`
1137
+ 3. Create team → `wxcli cc-team create --json-body '...'`
1138
+ 4. Create entry point → `wxcli cc-entry-point create --json-body '...'`
1139
+ 5. Create queue → `wxcli cc-queue create --json-body '...'`
1140
+ 6. Map dial number → `wxcli cc-dial-number create --json-body '...'`
1141
+ 7. Create/assign flow → `wxcli cc-flow publish FLOW_ID PROJECT_ID --comment "..."`
1142
+ 8. Verify end-to-end → list all resources and confirm IDs are linked
1143
+
1144
+ ### Workflow B: Add skill-based routing
1145
+
1146
+ 1. Create skill definitions → `wxcli cc-skill create --json-body '...'` (one per skill)
1147
+ 2. Create skill profiles → `wxcli cc-skill-profile create --json-body '...'`
1148
+ 3. Update queue routing type → `wxcli cc-queue update --json-body '{"routingType": "SKILLS_BASED", ...}'`
1149
+ 4. Assign skill profiles to teams/agents
1150
+ 5. Verify queue-to-skill mapping → `wxcli cc-queue list-skill-based-queues SKILL_PROFILE_ID -o json`
1151
+ 6. Verify user queue assignments → `wxcli cc-queue list-agent-based-queues USER_CI_ID -o json`
1152
+
1153
+ ### Workflow C: Set up outbound campaign
1154
+
1155
+ 1. Configure outdial ANI → `wxcli cc-outdial-ani create --json-body '...'`
1156
+ 2. Upload contact list → `wxcli cc-contact-list create --json-body '...'`
1157
+ 3. Create outbound entry point → `wxcli cc-entry-point create --json-body '...'`
1158
+ 4. Start campaign → `wxcli cc-campaign create --json-body '...'`
1159
+
1160
+ ### Workflow D: Configure agent monitoring
1161
+
1162
+ 1. Create event subscription → `wxcli cc-subscriptions create --json-body '...'`
1163
+ 2. Monitor live calls → `wxcli cc-call-monitoring create --json-body '...'`
1164
+ 3. Barge in if needed → `wxcli cc-call-monitoring create-barge-in --json-body '...'`
1165
+
1166
+ ### Workflow E: Reskill agents
1167
+
1168
+ 1. List current user skill assignments → `wxcli cc-users show USER_ID -o json`
1169
+ 2. List users by dynamic skill → `wxcli cc-users show-by-dynamic-skill-id SKILL_ID -o json`
1170
+ 3. Bulk update dynamic skills → `wxcli cc-users update-dynamic-skill --json-body '...'`
1171
+ 4. Reassign skill profile → `wxcli cc-users update-reskill --json-body '...'`
1172
+ 5. Verify updated queues → `wxcli cc-queue list-agent-based-queues USER_CI_ID -o json`
1173
+
1174
+ ---
1175
+
1176
+ ## Context Compaction Recovery
1177
+
1178
+ If context compacts mid-execution, recover by:
1179
+ 1. Read the deployment plan from conversation history to recover what was planned
1180
+ 2. Check what's already been created: run the relevant `list` commands for each resource type
1181
+ 3. Resume from the first incomplete step