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,473 @@
1
+ # Meetings: Transcripts, Captions, Chats, and Summaries
2
+
3
+ Reference for Webex Meetings content and media APIs. Covers the 16 commands across 5 CLI groups that an admin, compliance officer, or meeting host uses to retrieve, download, and manage meeting transcripts, closed captions, post-meeting chats, in-meeting messages, and AI-generated summaries. Sourced from the Webex Meetings API (OpenAPI spec: `specs/webex-meetings.json`).
4
+
5
+ ## Sources
6
+
7
+ - OpenAPI spec: `specs/webex-meetings.json`
8
+ - [developer.webex.com Meetings APIs](https://developer.webex.com/docs/api/v1/meeting-transcripts)
9
+
10
+ ---
11
+
12
+ ## Table of Contents
13
+
14
+ 1. [Content Model Overview](#1-content-model-overview)
15
+ 2. [Transcripts](#2-transcripts)
16
+ 3. [Closed Captions](#3-closed-captions)
17
+ 4. [Chats](#4-chats)
18
+ 5. [Meeting Messages](#5-meeting-messages)
19
+ 6. [Summaries](#6-summaries)
20
+ 7. [Recordings (Cross-Reference)](#7-recordings-cross-reference)
21
+ 8. [Raw HTTP Endpoints](#8-raw-http-endpoints)
22
+ 9. [Gotchas](#9-gotchas)
23
+ 10. [See Also](#10-see-also)
24
+
25
+ ---
26
+
27
+ ## 1. Content Model Overview
28
+
29
+ Every Webex meeting can produce multiple content artifacts. These become available after the meeting ends (with the exception of in-meeting messages, which exist during the meeting).
30
+
31
+ ```
32
+ Meeting Instance (ended)
33
+ ├── Transcripts ← speech-to-text of the full meeting audio
34
+ │ └── Snippets ← individual speaker segments within a transcript
35
+ ├── Closed Captions ← real-time captions captured during the meeting
36
+ │ └── Snippets ← individual caption segments
37
+ ├── Post-Meeting Chats ← chat messages sent during the meeting
38
+ ├── Meeting Messages ← in-meeting chat (compliance deletion only)
39
+ └── Summaries ← AI-generated meeting summary (requires AI Assistant)
40
+ ```
41
+
42
+ **Key distinctions:**
43
+ - **Transcripts** are generated after the meeting from the recorded audio. They contain speaker-attributed text segments (snippets) and can be downloaded as VTT or TXT files.
44
+ - **Closed captions** are captured in real-time during the meeting. They are separate from transcripts and have their own snippet/download endpoints.
45
+ - **Post-meeting chats** (`postMeetingChats`) are the chat messages participants sent during the meeting, made available after the meeting ends.
46
+ - **Meeting messages** are a compliance-only deletion endpoint for removing specific messages from a meeting's chat history.
47
+ - **Summaries** are AI-generated meeting summaries that require the Webex AI Assistant feature to be enabled in the org.
48
+
49
+ **Token type requirements:**
50
+ - Most endpoints work with **user tokens** (meeting host or attendee).
51
+ - Compliance endpoints at `/admin/meetingTranscripts` and `/admin/meetingSummaries` require **admin tokens** with compliance officer scopes.
52
+ - The `hostEmail` parameter on several endpoints allows an admin to act on behalf of a specific host.
53
+
54
+ **CLI groups in this doc:**
55
+
56
+ | CLI Group | Resource | Commands |
57
+ |-----------|----------|---------|
58
+ | `meeting-transcripts` | Transcripts + snippets | 7 |
59
+ | `meeting-captions` | Closed captions + snippets | 3 |
60
+ | `meeting-chats` | Post-meeting chats | 2 |
61
+ | `meeting-messages` | In-meeting messages (compliance) | 1 |
62
+ | `meeting-summaries` | AI-generated summaries | 3 |
63
+
64
+ ---
65
+
66
+ ## 2. Transcripts
67
+
68
+ **CLI group:** `meeting-transcripts`
69
+ **API base:** `https://webexapis.com/v1/meetingTranscripts`
70
+
71
+ Transcripts provide speech-to-text content for ended meetings. Each transcript is composed of snippets — individual speaker segments with timestamps. Two list endpoints exist: one for regular users (scoped to their meetings) and one for compliance officers (org-wide).
72
+
73
+ ### Commands
74
+
75
+ | Command | CLI | HTTP Method | What It Does |
76
+ |---------|-----|------------|-------------|
77
+ | List (compliance) | `wxcli meeting-transcripts list` | GET /admin/meetingTranscripts | List transcripts org-wide (compliance officer) |
78
+ | List (user) | `wxcli meeting-transcripts list-meeting-transcripts` | GET /meetingTranscripts | List transcripts for the authenticated user's meetings |
79
+ | Download | `wxcli meeting-transcripts list-download TRANSCRIPT_ID` | GET /meetingTranscripts/{transcriptId}/download | Download transcript as VTT or TXT |
80
+ | List snippets | `wxcli meeting-transcripts list-snippets TRANSCRIPT_ID` | GET /meetingTranscripts/{transcriptId}/snippets | List speaker segments in a transcript |
81
+ | Show snippet | `wxcli meeting-transcripts show TRANSCRIPT_ID SNIPPET_ID` | GET /meetingTranscripts/{transcriptId}/snippets/{snippetId} | Get a single snippet's details |
82
+ | Update snippet | `wxcli meeting-transcripts update TRANSCRIPT_ID SNIPPET_ID` | PUT /meetingTranscripts/{transcriptId}/snippets/{snippetId} | Edit the text of a snippet (corrections) |
83
+ | Delete | `wxcli meeting-transcripts delete TRANSCRIPT_ID` | DELETE /meetingTranscripts/{transcriptId} | Delete a transcript |
84
+
85
+ ### Key Parameters
86
+
87
+ #### `meeting-transcripts list` (compliance)
88
+
89
+ | Option | Description |
90
+ |--------|-------------|
91
+ | `--from DATETIME` | Starting date/time (inclusive), ISO 8601 |
92
+ | `--to DATETIME` | Ending date/time (exclusive), ISO 8601 |
93
+ | `--max N` | Page size (1-100) |
94
+ | `--site-url URL` | Webex site URL to scope the query |
95
+
96
+ #### `meeting-transcripts list-meeting-transcripts` (user)
97
+
98
+ | Option | Description |
99
+ |--------|-------------|
100
+ | `--meeting-id ID` | Filter to a specific meeting instance. If omitted, returns transcripts for all of the user's meetings |
101
+ | `--host-email EMAIL` | Act on behalf of this host (admin token + admin scopes required) |
102
+ | `--site-url URL` | Webex site URL. Defaults to user's preferred site |
103
+ | `--from DATETIME` | Starting date/time (inclusive), ISO 8601 |
104
+ | `--to DATETIME` | Ending date/time (exclusive), ISO 8601 |
105
+ | `--max N` | Page size (1-100) |
106
+
107
+ #### `meeting-transcripts list-download`
108
+
109
+ | Option | Description |
110
+ |--------|-------------|
111
+ | `--format FORMAT` | Download format: `vtt` or `txt` |
112
+ | `--host-email EMAIL` | Act on behalf of this host (admin token + admin scopes required) |
113
+
114
+ #### `meeting-transcripts list-snippets`
115
+
116
+ | Option | Description |
117
+ |--------|-------------|
118
+ | `--max N` | Maximum snippet items per page |
119
+
120
+ #### `meeting-transcripts update`
121
+
122
+ | Option | Description |
123
+ |--------|-------------|
124
+ | `--reason TEXT` | Reason for the edit |
125
+ | `--text TEXT` | Corrected text for the snippet |
126
+
127
+ #### `meeting-transcripts delete`
128
+
129
+ | Option | Description |
130
+ |--------|-------------|
131
+ | `--reason TEXT` | Reason for the deletion |
132
+ | `--comment TEXT` | Additional comment |
133
+
134
+ ### Raw HTTP
135
+
136
+ ```python
137
+ BASE = "https://webexapis.com/v1"
138
+ headers = {"Authorization": f"Bearer {token}"}
139
+
140
+ # List transcripts for a specific meeting (user token)
141
+ resp = requests.get(f"{BASE}/meetingTranscripts",
142
+ headers=headers,
143
+ params={"meetingId": meeting_id})
144
+ transcripts = resp.json().get("items", [])
145
+ # Each item: {"id", "meetingId", "hostEmail", "siteUrl", "startDate", "endDate", ...}
146
+
147
+ # List transcripts org-wide (compliance officer / admin token)
148
+ resp = requests.get(f"{BASE}/admin/meetingTranscripts",
149
+ headers=headers,
150
+ params={"from": "2026-03-01T00:00:00Z", "to": "2026-03-28T00:00:00Z"})
151
+ transcripts = resp.json().get("items", [])
152
+
153
+ # Download a transcript as VTT
154
+ resp = requests.get(f"{BASE}/meetingTranscripts/{transcript_id}/download",
155
+ headers=headers,
156
+ params={"format": "vtt"})
157
+ # resp.text contains the raw VTT file content (NOT JSON)
158
+ with open("transcript.vtt", "w") as f:
159
+ f.write(resp.text)
160
+
161
+ # List snippets (speaker segments) in a transcript
162
+ resp = requests.get(f"{BASE}/meetingTranscripts/{transcript_id}/snippets",
163
+ headers=headers)
164
+ snippets = resp.json().get("items", [])
165
+ # Each snippet: {"id", "text", "personName", "personEmail", "startTime", "endTime", ...}
166
+
167
+ # Get a single snippet
168
+ resp = requests.get(
169
+ f"{BASE}/meetingTranscripts/{transcript_id}/snippets/{snippet_id}",
170
+ headers=headers)
171
+ snippet = resp.json()
172
+
173
+ # Update a snippet (correct the text)
174
+ resp = requests.put(
175
+ f"{BASE}/meetingTranscripts/{transcript_id}/snippets/{snippet_id}",
176
+ headers=headers,
177
+ json={"text": "Corrected text here", "reason": "Typo fix"})
178
+
179
+ # Delete a transcript
180
+ resp = requests.delete(f"{BASE}/meetingTranscripts/{transcript_id}",
181
+ headers=headers,
182
+ json={"reason": "Data retention policy", "comment": "Removing per compliance request"})
183
+ # Returns 204 No Content on success
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 3. Closed Captions
189
+
190
+ **CLI group:** `meeting-captions`
191
+ **API base:** `https://webexapis.com/v1/meetingClosedCaptions`
192
+
193
+ Closed captions are the real-time captions captured during a meeting. They are distinct from transcripts (which are generated post-meeting from audio). Only available for ended meeting instances.
194
+
195
+ ### Commands
196
+
197
+ | Command | CLI | HTTP Method | What It Does |
198
+ |---------|-----|------------|-------------|
199
+ | List captions | `wxcli meeting-captions list-meeting-closed-captions` | GET /meetingClosedCaptions | List closed captions for a meeting |
200
+ | List snippets | `wxcli meeting-captions list CAPTION_ID` | GET /meetingClosedCaptions/{closedCaptionId}/snippets | List individual caption segments |
201
+ | Download | `wxcli meeting-captions list-download CAPTION_ID` | GET /meetingClosedCaptions/{closedCaptionId}/download | Download captions as VTT or TXT |
202
+
203
+ ### Key Parameters
204
+
205
+ #### `meeting-captions list-meeting-closed-captions`
206
+
207
+ | Option | Description |
208
+ |--------|-------------|
209
+ | `--meeting-id ID` | Meeting instance ID (required). Only works for ended meetings |
210
+
211
+ #### `meeting-captions list`
212
+
213
+ | Option | Description |
214
+ |--------|-------------|
215
+ | `--meeting-id ID` | Meeting instance ID. Only works for ended meetings |
216
+
217
+ #### `meeting-captions list-download`
218
+
219
+ | Option | Description |
220
+ |--------|-------------|
221
+ | `--format FORMAT` | Download format: `vtt` or `txt` |
222
+ | `--meeting-id ID` | Meeting instance ID. Only works for ended meetings |
223
+ | `--timezone TZ` | Timezone for timestamps (e.g., `UTC`, `America/New_York`). Passed as a header |
224
+
225
+ ### Raw HTTP
226
+
227
+ ```python
228
+ BASE = "https://webexapis.com/v1"
229
+ headers = {"Authorization": f"Bearer {token}"}
230
+
231
+ # List closed captions for a meeting
232
+ resp = requests.get(f"{BASE}/meetingClosedCaptions",
233
+ headers=headers,
234
+ params={"meetingId": meeting_id})
235
+ captions = resp.json().get("items", [])
236
+ # Each item: {"id", "meetingId", "language", ...}
237
+
238
+ # List caption snippets
239
+ resp = requests.get(f"{BASE}/meetingClosedCaptions/{caption_id}/snippets",
240
+ headers=headers,
241
+ params={"meetingId": meeting_id})
242
+ snippets = resp.json().get("items", [])
243
+ # Each snippet: {"id", "text", "personName", "personEmail", "startTime", ...}
244
+
245
+ # Download captions as VTT
246
+ resp = requests.get(f"{BASE}/meetingClosedCaptions/{caption_id}/download",
247
+ headers={**headers, "timezone": "UTC"},
248
+ params={"format": "vtt", "meetingId": meeting_id})
249
+ # resp.text contains the raw VTT file content (NOT JSON)
250
+ with open("captions.vtt", "w") as f:
251
+ f.write(resp.text)
252
+ ```
253
+
254
+ ---
255
+
256
+ ## 4. Chats
257
+
258
+ **CLI group:** `meeting-chats`
259
+ **API base:** `https://webexapis.com/v1/meetings/postMeetingChats`
260
+
261
+ Post-meeting chats are the chat messages participants sent during a meeting. The API path uses `postMeetingChats` — these are only available after the meeting ends. The endpoint does not support in-progress meetings.
262
+
263
+ ### Commands
264
+
265
+ | Command | CLI | HTTP Method | What It Does |
266
+ |---------|-----|------------|-------------|
267
+ | List chats | `wxcli meeting-chats list` | GET /meetings/postMeetingChats | List chat messages from a meeting |
268
+ | Delete chats | `wxcli meeting-chats delete` | DELETE /meetings/postMeetingChats | Delete all chats for a meeting |
269
+
270
+ ### Key Parameters
271
+
272
+ #### `meeting-chats list`
273
+
274
+ | Option | Description |
275
+ |--------|-------------|
276
+ | `--meeting-id ID` | Meeting instance ID (required). Personal room meeting IDs are not supported |
277
+ | `--max N` | Maximum number of chats per response, up to 100 |
278
+ | `--offset N` | Offset from the first result for pagination |
279
+
280
+ #### `meeting-chats delete`
281
+
282
+ | Option | Description |
283
+ |--------|-------------|
284
+ | `--meeting-id ID` | Meeting instance ID (required). Personal room meeting IDs are not supported |
285
+
286
+ ### Raw HTTP
287
+
288
+ ```python
289
+ BASE = "https://webexapis.com/v1"
290
+ headers = {"Authorization": f"Bearer {token}"}
291
+
292
+ # List post-meeting chats
293
+ resp = requests.get(f"{BASE}/meetings/postMeetingChats",
294
+ headers=headers,
295
+ params={"meetingId": meeting_id, "max": 100})
296
+ chats = resp.json().get("items", [])
297
+ # Each item: {"id", "text", "senderName", "senderEmail", "sentTime", ...}
298
+
299
+ # Delete all chats for a meeting
300
+ resp = requests.delete(f"{BASE}/meetings/postMeetingChats",
301
+ headers=headers,
302
+ params={"meetingId": meeting_id})
303
+ # Returns 204 No Content on success
304
+ ```
305
+
306
+ ### Gotchas
307
+
308
+ - **Chats use offset-based pagination**, not cursor-based. Use `--offset` to page through results, unlike most Webex APIs that use `Link` headers.
309
+ - **The delete endpoint removes ALL chats for the meeting** — there is no per-message delete for post-meeting chats.
310
+
311
+ ---
312
+
313
+ ## 5. Meeting Messages
314
+
315
+ **CLI group:** `meeting-messages`
316
+ **API base:** `https://webexapis.com/v1/meeting/messages`
317
+
318
+ This is a compliance-only endpoint for deleting individual messages from a meeting's in-meeting chat. Note the singular `meeting` in the path (not `meetings`).
319
+
320
+ ### Commands
321
+
322
+ | Command | CLI | HTTP Method | What It Does |
323
+ |---------|-----|------------|-------------|
324
+ | Delete message | `wxcli meeting-messages delete MESSAGE_ID` | DELETE /meeting/messages/{meetingMessageId} | Delete a specific meeting message (compliance) |
325
+
326
+ ### Raw HTTP
327
+
328
+ ```python
329
+ BASE = "https://webexapis.com/v1"
330
+ headers = {"Authorization": f"Bearer {token}"}
331
+
332
+ # Delete a specific meeting message (compliance officer token required)
333
+ resp = requests.delete(f"{BASE}/meeting/messages/{meeting_message_id}",
334
+ headers=headers)
335
+ # Returns 204 No Content on success
336
+ ```
337
+
338
+ ### Gotchas
339
+
340
+ - **This is a compliance endpoint** — it requires admin-level scopes. Regular users cannot delete individual meeting messages.
341
+ - **Note the singular path:** `/meeting/messages/{meetingMessageId}` — not `/meetings/messages/`. This differs from the chats endpoint at `/meetings/postMeetingChats`.
342
+
343
+ ---
344
+
345
+ ## 6. Summaries
346
+
347
+ **CLI group:** `meeting-summaries`
348
+ **API base:** `https://webexapis.com/v1/meetingSummaries`
349
+
350
+ AI-generated meeting summaries produced by the Webex AI Assistant. Two list endpoints exist: one for regular users (by meeting ID) and one for compliance officers (org-wide). Summaries are only available for ended meeting instances — not for meeting series, scheduled meetings, in-progress meetings, or personal room meetings.
351
+
352
+ ### Commands
353
+
354
+ | Command | CLI | HTTP Method | What It Does |
355
+ |---------|-----|------------|-------------|
356
+ | List (compliance) | `wxcli meeting-summaries list` | GET /admin/meetingSummaries | Get summary org-wide (compliance officer) |
357
+ | List (user) | `wxcli meeting-summaries list-meeting-summaries` | GET /meetingSummaries | Get summary by meeting ID |
358
+ | Delete | `wxcli meeting-summaries delete SUMMARY_ID` | DELETE /meetingSummaries/{summaryId} | Delete a summary |
359
+
360
+ ### Key Parameters
361
+
362
+ #### `meeting-summaries list` (compliance)
363
+
364
+ | Option | Description |
365
+ |--------|-------------|
366
+ | `--meeting-id ID` | Meeting instance ID (required — query is rejected without it) |
367
+
368
+ #### `meeting-summaries list-meeting-summaries` (user)
369
+
370
+ | Option | Description |
371
+ |--------|-------------|
372
+ | `--meeting-id ID` | Meeting instance ID (required — query is rejected without it) |
373
+
374
+ ### Raw HTTP
375
+
376
+ ```python
377
+ BASE = "https://webexapis.com/v1"
378
+ headers = {"Authorization": f"Bearer {token}"}
379
+
380
+ # Get summary by meeting ID (user token)
381
+ resp = requests.get(f"{BASE}/meetingSummaries",
382
+ headers=headers,
383
+ params={"meetingId": meeting_id})
384
+ summary = resp.json()
385
+ # Returns: {"meetingId", "summary", "keywords", "actionItems", ...}
386
+
387
+ # Get summary for compliance officer (admin token)
388
+ resp = requests.get(f"{BASE}/admin/meetingSummaries",
389
+ headers=headers,
390
+ params={"meetingId": meeting_id})
391
+ summary = resp.json()
392
+
393
+ # Delete a summary
394
+ resp = requests.delete(f"{BASE}/meetingSummaries/{summary_id}",
395
+ headers=headers)
396
+ # Returns 204 No Content on success
397
+ ```
398
+
399
+ ### Gotchas
400
+
401
+ - **`meetingId` is required for both list endpoints.** The API rejects the query if `meetingId` is not specified, even though the spec marks it as optional.
402
+ - **Summaries require the Webex AI Assistant feature** to be enabled for the org. If not enabled, these endpoints return empty results or errors.
403
+ - **Only ended meeting instances are supported.** Meeting series IDs, scheduled meeting IDs, in-progress meeting instance IDs, and personal room meeting IDs are all rejected.
404
+
405
+ ---
406
+
407
+ ## 7. Recordings (Cross-Reference)
408
+
409
+ Meeting recordings are **not** in the `webex-meetings.json` spec. They are covered by the admin API and managed through the `admin-recordings` CLI group (generated from `specs/webex-admin.json`).
410
+
411
+ See [`admin-apps-data.md`](admin-apps-data.md) for recording management: list recordings, get recording details, download, delete, and move recordings.
412
+
413
+ ---
414
+
415
+ ## 8. Raw HTTP Endpoints
416
+
417
+ All 16 endpoints covered by the 5 CLI groups in this doc.
418
+
419
+ | Method | Path | CLI Group | CLI Command | Token |
420
+ |--------|------|-----------|-------------|-------|
421
+ | GET | /admin/meetingTranscripts | meeting-transcripts | `list` | Admin |
422
+ | GET | /meetingTranscripts | meeting-transcripts | `list-meeting-transcripts` | User |
423
+ | GET | /meetingTranscripts/{transcriptId}/download | meeting-transcripts | `list-download` | User/Admin |
424
+ | GET | /meetingTranscripts/{transcriptId}/snippets | meeting-transcripts | `list-snippets` | User/Admin |
425
+ | GET | /meetingTranscripts/{transcriptId}/snippets/{snippetId} | meeting-transcripts | `show` | User/Admin |
426
+ | PUT | /meetingTranscripts/{transcriptId}/snippets/{snippetId} | meeting-transcripts | `update` | User/Admin |
427
+ | DELETE | /meetingTranscripts/{transcriptId} | meeting-transcripts | `delete` | User/Admin |
428
+ | GET | /meetingClosedCaptions | meeting-captions | `list-meeting-closed-captions` | User |
429
+ | GET | /meetingClosedCaptions/{closedCaptionId}/snippets | meeting-captions | `list` | User |
430
+ | GET | /meetingClosedCaptions/{closedCaptionId}/download | meeting-captions | `list-download` | User |
431
+ | GET | /meetings/postMeetingChats | meeting-chats | `list` | User |
432
+ | DELETE | /meetings/postMeetingChats | meeting-chats | `delete` | User/Admin |
433
+ | DELETE | /meeting/messages/{meetingMessageId} | meeting-messages | `delete` | Admin |
434
+ | GET | /admin/meetingSummaries | meeting-summaries | `list` | Admin |
435
+ | GET | /meetingSummaries | meeting-summaries | `list-meeting-summaries` | User |
436
+ | DELETE | /meetingSummaries/{summaryId} | meeting-summaries | `delete` | User/Admin |
437
+
438
+ ---
439
+
440
+ ## 9. Gotchas
441
+
442
+ These issues span multiple meeting content API surfaces. Check per-section Gotchas for endpoint-specific notes.
443
+
444
+ 1. **Admin vs user list endpoints.** Transcripts and summaries each have two list paths: `/admin/meetingTranscripts` and `/admin/meetingSummaries` require admin tokens with compliance officer scopes and return org-wide results. The non-admin paths (`/meetingTranscripts`, `/meetingSummaries`) use user tokens and return results scoped to the authenticated user's meetings.
445
+
446
+ 2. **Download endpoints return raw file content, not JSON.** Both `meeting-transcripts list-download` and `meeting-captions list-download` return the raw VTT or TXT file body. The response `Content-Type` will be `text/vtt` or `text/plain`, not `application/json`. Parse accordingly.
447
+
448
+ 3. **Chats endpoint path is `postMeetingChats`.** The API path is `/meetings/postMeetingChats`, not `/meetings/chats`. These chats are only available after the meeting ends — in-progress meetings return no results.
449
+
450
+ 4. **Meeting messages uses singular `/meeting/messages/` path.** This is distinct from the chats path at `/meetings/postMeetingChats`. The singular path is a compliance-only delete endpoint for individual in-meeting messages.
451
+
452
+ 5. **Personal room meeting IDs are not supported** across most of these endpoints. Transcript lists, caption lists, chat lists, and summary queries all explicitly reject personal room meeting IDs. Use only meeting instance IDs from ended meetings.
453
+
454
+ 6. **Transcript snippet update only allows editing `text` and `reason`.** You cannot change the speaker attribution, timestamps, or other metadata on a snippet — only the transcribed text (for corrections) and an optional reason for the edit.
455
+
456
+ 7. **Transcript delete accepts a request body** (with `reason` and `comment` fields) even though it is a DELETE request. Most REST APIs do not use request bodies on DELETE — this is an unusual pattern.
457
+
458
+ 8. **Summaries require Webex AI Assistant.** The meeting summaries endpoints only return data if the org has the AI Assistant feature enabled and the meeting was configured to generate a summary. Without this feature, the endpoints return empty results.
459
+
460
+ 9. **Caption snippets vs transcript snippets are separate resources.** Even though both represent text segments of meeting content, captions (`/meetingClosedCaptions/{id}/snippets`) and transcript snippets (`/meetingTranscripts/{id}/snippets`) are different API surfaces with different IDs. Captions are captured in real-time; transcripts are generated post-meeting from audio.
461
+
462
+ 10. **Chats use offset-based pagination.** Unlike most Webex APIs that use cursor-based pagination with `Link` headers, the post-meeting chats endpoint uses `--offset` and `--max` for paging.
463
+
464
+ ---
465
+
466
+ ## 10. See Also
467
+
468
+ - [`meetings-core.md`](meetings-core.md) — Meeting CRUD, templates, controls, registrants, interpreters, breakouts, surveys
469
+ - [`meetings-settings.md`](meetings-settings.md) — Preferences, session types, tracking codes, site settings, polls, Q&A, reports
470
+ - [`meetings-infrastructure.md`](meetings-infrastructure.md) — Video Mesh (clusters, nodes, health, utilization), participants, invitees
471
+ - [`admin-apps-data.md`](admin-apps-data.md) — Recording management (`admin-recordings` CLI group): list, download, delete, and move meeting recordings
472
+ - [`webhooks-events.md`](webhooks-events.md) — Webhook CRUD and event payloads for meeting events (`meetings`, `recordings`)
473
+ - [`authentication.md`](authentication.md) — Token types, scopes, admin vs user vs compliance officer tokens