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,1020 @@
1
+ # Self-Service Call Settings Reference — /people/me/ API Surface
2
+
3
+ User-level self-service endpoints for managing personal call settings via user OAuth tokens. These endpoints mirror many admin-path settings but use `/telephony/config/people/me/` instead of `/telephony/config/people/{personId}/`.
4
+
5
+ ## Sources
6
+
7
+ - specs/webex-cloud-calling.json (6 "Call Settings For Me" tags + Mode Management + Beta Barge-In, 156 endpoints across 99 paths)
8
+ - CLAUDE.md known issue #4 (6 user-only endpoints)
9
+ - person-call-settings-*.md (admin-path equivalents)
10
+
11
+ ---
12
+
13
+ ## 1. Overview & Authentication
14
+
15
+ ### Token Requirements
16
+
17
+ All `/telephony/config/people/me/` endpoints require **user-level OAuth tokens**. Admin tokens (service app, integration with admin grant) will not work — they return 404 on user-only endpoints and are not supported on any `/me/` path.
18
+
19
+ The authenticated user **must have a Webex Calling license** assigned. Users without a calling license receive error 4008.
20
+
21
+ ### Scopes
22
+
23
+ | Operation | Required Scope |
24
+ |-----------|---------------|
25
+ | GET (read settings) | `spark:people_read` |
26
+ | PUT (modify settings) | `spark:people_write` |
27
+ | POST (create criteria/numbers) | `spark:people_write` |
28
+ | DELETE (remove criteria/numbers) | `spark:people_write` |
29
+
30
+ ### Error Patterns
31
+
32
+ | HTTP Code | Error Code | Meaning | Resolution |
33
+ |-----------|-----------|---------|------------|
34
+ | 404 | 4008 | User not calling-licensed | Assign Webex Calling license to the authenticated user |
35
+ | 404 | — | Endpoint not found | Verify the path; some settings require specific feature enablement |
36
+ | 400 | — | Bad request | Check request body against the schema |
37
+ | 401 | — | Unauthorized | Token expired or missing required scope |
38
+ | 403 | — | Forbidden | User lacks permission for this setting (may be admin-locked) |
39
+
40
+ ### Base URL
41
+
42
+ All endpoints use `https://webexapis.com/v1` as the base URL:
43
+
44
+ ```
45
+ https://webexapis.com/v1/telephony/config/people/me/...
46
+ ```
47
+
48
+ ---
49
+
50
+ ## 2. User-Only Settings (No Admin Path)
51
+
52
+ These 6 settings exist **only** at `/telephony/config/people/me/settings/{feature}`. There is no admin-path equivalent (`/telephony/config/people/{personId}/...`). Admin tokens get 404. You **must** use a user-level OAuth token from the calling-licensed user whose settings you want to read or modify.
53
+
54
+ ### Summary Table
55
+
56
+ | Setting | GET | PUT | Criteria CRUD | Tag |
57
+ |---------|-----|-----|---------------|-----|
58
+ | simultaneousRing | Yes | Yes | Create/Get/Update/Delete | Call Settings For Me Phase 4 |
59
+ | sequentialRing | Yes | Yes | Create/Get/Update/Delete | Call Settings For Me With UserHub Phase3 |
60
+ | priorityAlert | Yes | Yes | Create/Get/Update/Delete | Call Settings For Me With UserHub Phase2 |
61
+ | callNotify | Yes | Yes | Create/Get/Update/Delete | Call Settings For Me With UserHub Phase2 |
62
+ | anonymousCallReject | Yes | Yes | — | Call Settings For Me With UserHub Phase3 |
63
+ | callPolicies | Yes | Yes | — | Beta Call Settings For Me With Userhub Phase1 |
64
+
65
+ > **Note:** There is no standalone "List criteria" endpoint. Criteria are returned as a `criterias` array in the parent GET response (e.g., `GET /me/settings/simultaneousRing` includes all criteria in its response body).
66
+
67
+ ### 2.1 Simultaneous Ring
68
+
69
+ Rings multiple phone numbers/destinations at the same time when the user receives an incoming call.
70
+
71
+ **Endpoints:**
72
+
73
+ | Method | Path | Summary |
74
+ |--------|------|---------|
75
+ | GET | `/me/settings/simultaneousRing` | Retrieve settings |
76
+ | PUT | `/me/settings/simultaneousRing` | Modify settings |
77
+ | POST | `/me/settings/simultaneousRing/criteria` | Create criteria |
78
+ | GET | `/me/settings/simultaneousRing/criteria/{id}` | Get criteria |
79
+ | PUT | `/me/settings/simultaneousRing/criteria/{id}` | Modify criteria |
80
+ | DELETE | `/me/settings/simultaneousRing/criteria/{id}` | Delete criteria |
81
+
82
+ **Raw HTTP — Read:**
83
+ ```http
84
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing
85
+ Authorization: Bearer {user_token}
86
+ ```
87
+
88
+ **Raw HTTP — Modify:**
89
+ ```http
90
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/simultaneousRing
91
+ Authorization: Bearer {user_token}
92
+ Content-Type: application/json
93
+
94
+ {
95
+ "enabled": true,
96
+ "doNotRingIfOnCall": false,
97
+ "phoneNumbers": [
98
+ {
99
+ "phoneNumber": "+14085551234",
100
+ "answerConfirmationEnabled": false
101
+ }
102
+ ]
103
+ }
104
+ ```
105
+
106
+ Data model details: see `person-call-settings-handling.md` section 4 (Simultaneous Ring).
107
+
108
+ ### 2.2 Sequential Ring
109
+
110
+ Rings a sequence of phone numbers one after another until the call is answered or goes to voicemail.
111
+
112
+ **Endpoints:**
113
+
114
+ | Method | Path | Summary |
115
+ |--------|------|---------|
116
+ | GET | `/me/settings/sequentialRing` | Retrieve settings |
117
+ | PUT | `/me/settings/sequentialRing` | Modify settings |
118
+ | POST | `/me/settings/sequentialRing/criteria` | Create criteria |
119
+ | GET | `/me/settings/sequentialRing/criteria/{id}` | Get criteria |
120
+ | PUT | `/me/settings/sequentialRing/criteria/{id}` | Modify criteria |
121
+ | DELETE | `/me/settings/sequentialRing/criteria/{id}` | Delete criteria |
122
+
123
+ **Raw HTTP — Read:**
124
+ ```http
125
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing
126
+ Authorization: Bearer {user_token}
127
+ ```
128
+
129
+ **Raw HTTP — Modify:**
130
+ ```http
131
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/sequentialRing
132
+ Authorization: Bearer {user_token}
133
+ Content-Type: application/json
134
+
135
+ {
136
+ "enabled": true,
137
+ "ringBaseLocationFirst": true,
138
+ "baseLocationNumberOfRings": 3,
139
+ "continueIfBaseLocationIsBusy": true,
140
+ "callerIdForOutgoingCalls": false,
141
+ "phoneNumbers": [
142
+ {
143
+ "phoneNumber": "+14085551234",
144
+ "numberOfRings": 3,
145
+ "answerConfirmationEnabled": false
146
+ }
147
+ ]
148
+ }
149
+ ```
150
+
151
+ Data model details: see `person-call-settings-handling.md` section 5 (Sequential Ring).
152
+
153
+ ### 2.3 Priority Alert
154
+
155
+ Plays a distinctive ring pattern for calls matching specific criteria (e.g., from certain callers or during specific schedules).
156
+
157
+ **Endpoints:**
158
+
159
+ | Method | Path | Summary |
160
+ |--------|------|---------|
161
+ | GET | `/me/settings/priorityAlert` | Retrieve settings |
162
+ | PUT | `/me/settings/priorityAlert` | Modify settings |
163
+ | POST | `/me/settings/priorityAlert/criteria` | Create criteria |
164
+ | GET | `/me/settings/priorityAlert/criteria/{id}` | Get criteria |
165
+ | PUT | `/me/settings/priorityAlert/criteria/{id}` | Modify criteria |
166
+ | DELETE | `/me/settings/priorityAlert/criteria/{id}` | Delete criteria |
167
+
168
+ **Raw HTTP — Read:**
169
+ ```http
170
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert
171
+ Authorization: Bearer {user_token}
172
+ ```
173
+
174
+ **Raw HTTP — Modify:**
175
+ ```http
176
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/priorityAlert
177
+ Authorization: Bearer {user_token}
178
+ Content-Type: application/json
179
+
180
+ {
181
+ "enabled": true
182
+ }
183
+ ```
184
+
185
+ Data model details: see `person-call-settings-handling.md` section 10 (Priority Alert).
186
+
187
+ ### 2.4 Call Notify
188
+
189
+ Sends email/text notifications when calls matching specific criteria are received.
190
+
191
+ **Endpoints:**
192
+
193
+ | Method | Path | Summary |
194
+ |--------|------|---------|
195
+ | GET | `/me/settings/callNotify` | Retrieve settings |
196
+ | PUT | `/me/settings/callNotify` | Modify settings |
197
+ | POST | `/me/settings/callNotify/criteria` | Create criteria |
198
+ | GET | `/me/settings/callNotify/criteria/{id}` | Get criteria |
199
+ | PUT | `/me/settings/callNotify/criteria/{id}` | Modify criteria |
200
+ | DELETE | `/me/settings/callNotify/criteria/{id}` | Delete criteria |
201
+
202
+ **Raw HTTP — Read:**
203
+ ```http
204
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/callNotify
205
+ Authorization: Bearer {user_token}
206
+ ```
207
+
208
+ **Raw HTTP — Modify:**
209
+ ```http
210
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/callNotify
211
+ Authorization: Bearer {user_token}
212
+ Content-Type: application/json
213
+
214
+ {
215
+ "enabled": true,
216
+ "destination": "user@example.com"
217
+ }
218
+ ```
219
+
220
+ ### 2.5 Anonymous Call Reject
221
+
222
+ Rejects calls from callers who have blocked their caller ID.
223
+
224
+ **Endpoints:**
225
+
226
+ | Method | Path | Summary |
227
+ |--------|------|---------|
228
+ | GET | `/me/settings/anonymousCallReject` | Retrieve settings |
229
+ | PUT | `/me/settings/anonymousCallReject` | Modify settings |
230
+
231
+ **Raw HTTP — Read:**
232
+ ```http
233
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject
234
+ Authorization: Bearer {user_token}
235
+ ```
236
+
237
+ **Raw HTTP — Modify:**
238
+ ```http
239
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/anonymousCallReject
240
+ Authorization: Bearer {user_token}
241
+ Content-Type: application/json
242
+
243
+ {
244
+ "enabled": true
245
+ }
246
+ ```
247
+
248
+ Data model details: see `person-call-settings-media.md` section 4 (Anonymous Call Rejection).
249
+
250
+ ### 2.6 Call Policies [BETA]
251
+
252
+ Controls privacy behavior on redirected calls. Tagged as Beta.
253
+
254
+ **Endpoints:**
255
+
256
+ | Method | Path | Summary |
257
+ |--------|------|---------|
258
+ | GET | `/me/settings/callPolicies` | Retrieve settings |
259
+ | PUT | `/me/settings/callPolicies` | Modify settings |
260
+
261
+ **Raw HTTP — Read:**
262
+ ```http
263
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies
264
+ Authorization: Bearer {user_token}
265
+ ```
266
+
267
+ **Raw HTTP — Modify:**
268
+ ```http
269
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/callPolicies
270
+ Authorization: Bearer {user_token}
271
+ Content-Type: application/json
272
+
273
+ {
274
+ "privacyOnRedirectedCalls": "NO_PRIVACY"
275
+ }
276
+ ```
277
+
278
+ Data model details: see `person-call-settings-permissions.md` section 5 (Call Policy). Note: the admin path uses `/telephony/config/people/{personId}/callPolicies` but that path does NOT appear in the current OpenAPI spec as an admin endpoint — it may exist but is undocumented.
279
+
280
+ ---
281
+
282
+ ## 3. Call Handling
283
+
284
+ Settings controlling how incoming calls are routed, forwarded, blocked, and selectively handled.
285
+
286
+ ### Endpoint Table
287
+
288
+ | Setting | GET | PUT | Path Suffix | Admin Equivalent |
289
+ |---------|-----|-----|-------------|-----------------|
290
+ | Call Forwarding | Yes | Yes | `settings/callForwarding` | `/people/{personId}/features/callForwarding` |
291
+ | Call Waiting | Yes | Yes | `settings/callWaiting` | `/people/{personId}/features/callWaiting` |
292
+ | Do Not Disturb | Yes | Yes | `settings/doNotDisturb` [BETA] | `/people/{personId}/features/doNotDisturb` |
293
+ | Selective Accept | Yes | Yes | `settings/selectiveAccept` | `/telephony/config/people/{personId}/selectiveAccept` |
294
+ | Selective Accept Criteria | CRUD | — | `settings/selectiveAccept/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveAccept/criteria[/{id}]` |
295
+ | Selective Forward | Yes | Yes | `settings/selectiveForward` | `/telephony/config/people/{personId}/selectiveForward` |
296
+ | Selective Forward Criteria | CRUD | — | `settings/selectiveForward/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveForward/criteria[/{id}]` |
297
+ | Selective Reject | Yes | Yes | `settings/selectiveReject` | `/telephony/config/people/{personId}/selectiveReject` |
298
+ | Selective Reject Criteria | CRUD | — | `settings/selectiveReject/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveReject/criteria[/{id}]` |
299
+ | Call Block | Yes | — | `settings/callBlock` | — |
300
+ | Call Block Numbers | GET/POST/DELETE | — | `settings/callBlock/numbers[/{phoneNumberId}]` | — |
301
+ | Personal Assistant | Yes | Yes | `settings/personalAssistant` | `/telephony/config/people/{personId}/features/personalAssistant` |
302
+
303
+ ### Raw HTTP — Read Call Forwarding
304
+
305
+ ```http
306
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/callForwarding
307
+ Authorization: Bearer {user_token}
308
+ ```
309
+
310
+ Response includes `callForwarding` (always/busy/noAnswer settings) and `businessContinuity` fields. See `person-call-settings-handling.md` section 1 for the full data model.
311
+
312
+ ### Raw HTTP — Read Call Block Settings
313
+
314
+ ```http
315
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/callBlock
316
+ Authorization: Bearer {user_token}
317
+ ```
318
+
319
+ ### Raw HTTP — Add Number to Call Block List
320
+
321
+ ```http
322
+ POST https://webexapis.com/v1/telephony/config/people/me/settings/callBlock/numbers
323
+ Authorization: Bearer {user_token}
324
+ Content-Type: application/json
325
+
326
+ {
327
+ "phoneNumber": "+14085559999"
328
+ }
329
+ ```
330
+
331
+ **Cross-references:**
332
+ - Call Forwarding: `person-call-settings-handling.md` section 1
333
+ - Call Waiting: `person-call-settings-handling.md` section 2
334
+ - DND: `person-call-settings-handling.md` section 3
335
+ - Selective Accept/Forward/Reject: `person-call-settings-handling.md` sections 7-9
336
+ - Personal Assistant: `person-call-settings-behavior.md` section 13
337
+
338
+ ---
339
+
340
+ ## 4. Executive & Assistant
341
+
342
+ Settings for the executive/assistant feature, including screening, filtering, alerting, and assistant assignment.
343
+
344
+ ### Endpoint Table
345
+
346
+ | Setting | GET | PUT | Path Suffix | Admin Equivalent | Tag |
347
+ |---------|-----|-----|-------------|-----------------|-----|
348
+ | Executive Alert | Yes | Yes | `settings/executive/alert` | `/telephony/config/people/{personId}/executive/alert` | Beta |
349
+ | Assigned Assistants | Yes | Yes | `settings/executive/assignedAssistants` | `/telephony/config/people/{personId}/executive/assignedAssistants` | — |
350
+ | Executive Assistant | Yes | Yes | `settings/executive/assistant` | `/telephony/config/people/{personId}/executive/assistant` | — |
351
+ | Available Assistants | Yes | — | `settings/executive/availableAssistants` | `/telephony/config/people/{personId}/executive/availableAssistants` | — |
352
+ | Call Filtering | Yes | Yes | `settings/executive/callFiltering` | `/telephony/config/people/{personId}/executive/callFiltering` | Beta |
353
+ | Call Filtering Criteria | CRUD | — | `settings/executive/callFiltering/criteria[/{id}]` | `/telephony/config/people/{personId}/executive/callFiltering/criteria[/{id}]` | Beta |
354
+ | Screening | Yes | Yes | `settings/executive/screening` | `/telephony/config/people/{personId}/executive/screening` | Beta |
355
+
356
+ ### Raw HTTP — Read Executive Alert Settings
357
+
358
+ ```http
359
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/executive/alert
360
+ Authorization: Bearer {user_token}
361
+ ```
362
+
363
+ ### Raw HTTP — Modify Executive Assigned Assistants
364
+
365
+ ```http
366
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/executive/assignedAssistants
367
+ Authorization: Bearer {user_token}
368
+ Content-Type: application/json
369
+
370
+ {
371
+ "assistants": [
372
+ {
373
+ "id": "{assistant_person_id}"
374
+ }
375
+ ]
376
+ }
377
+ ```
378
+
379
+ **Cross-reference:** `person-call-settings-permissions.md` section 4 (Executive / Assistant Settings).
380
+
381
+ ---
382
+
383
+ ## 5. Voicemail & Media
384
+
385
+ Settings for voicemail, call recording, caller ID, barge-in, and related media settings.
386
+
387
+ ### Endpoint Table
388
+
389
+ | Setting | GET | PUT | POST | Path Suffix | Admin Equivalent |
390
+ |---------|-----|-----|------|-------------|-----------------|
391
+ | Voicemail | Yes | Yes | — | `settings/voicemail` | `/people/{personId}/features/voicemail` |
392
+ | Voicemail Busy Greeting Upload | — | — | Yes | `settings/voicemail/actions/busyGreetingUpload/invoke` | `/people/{personId}/features/voicemail/actions/uploadBusyGreeting/invoke` |
393
+ | Voicemail No Answer Greeting Upload | — | — | Yes | `settings/voicemail/actions/noAnswerGreetingUpload/invoke` | `/people/{personId}/features/voicemail/actions/uploadNoAnswerGreeting/invoke` |
394
+ | Voicemail PIN | — | Yes | — | `voicemail/pin` | — |
395
+ | Voicemail Rules | Yes | — | — | `voicemail/rules` | `/telephony/config/voicemail/rules` (org-level) |
396
+ | Caller ID | Yes | Yes | — | `settings/callerId` | `/people/{personId}/features/callerId` |
397
+ | Selected Caller ID | Yes | Yes | — | `settings/selectedCallerId` | — |
398
+ | Available Caller IDs | Yes | — | — | `settings/availableCallerIds` | `/telephony/config/people/{personId}/agent/availableCallerIds` |
399
+ | Call Recording | Yes | — | — | `settings/callRecording` | `/people/{personId}/features/callRecording` |
400
+ | Barge-In | Yes | Yes | — | `settings/bargeIn` [BETA] | `/people/{personId}/features/bargeIn` |
401
+ | Call Captions | Yes | — | — | `settings/callCaptions` | `/telephony/config/people/{personId}/callCaptions` |
402
+ | WebexGo Override | Yes | Yes | — | `settings/webexGoOverride` | — |
403
+
404
+ ### Raw HTTP — Read Voicemail Settings
405
+
406
+ ```http
407
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/voicemail
408
+ Authorization: Bearer {user_token}
409
+ ```
410
+
411
+ ### Raw HTTP — Upload Busy Greeting
412
+
413
+ ```http
414
+ POST https://webexapis.com/v1/telephony/config/people/me/settings/voicemail/actions/busyGreetingUpload/invoke
415
+ Authorization: Bearer {user_token}
416
+ Content-Type: multipart/form-data
417
+
418
+ --boundary
419
+ Content-Disposition: form-data; name="file"; filename="busy-greeting.wav"
420
+ Content-Type: audio/wav
421
+
422
+ {binary audio data}
423
+ --boundary--
424
+ ```
425
+
426
+ ### Raw HTTP — Update Voicemail PIN
427
+
428
+ ```http
429
+ PUT https://webexapis.com/v1/telephony/config/people/me/voicemail/pin
430
+ Authorization: Bearer {user_token}
431
+ Content-Type: application/json
432
+
433
+ {
434
+ "passcode": "27850230"
435
+ }
436
+ ```
437
+
438
+ The PIN must comply with the organization's passcode rules (see voicemail rules endpoint below). No response body on success (204).
439
+
440
+ **CLI:** `wxcli call-settings-for-me-phase-5 update-pin --passcode "27850230"`
441
+
442
+ ### Raw HTTP — Read Voicemail Rules
443
+
444
+ ```http
445
+ GET https://webexapis.com/v1/telephony/config/people/me/voicemail/rules
446
+ Authorization: Bearer {user_token}
447
+ ```
448
+
449
+ Returns the passcode policy rules for the user's organization. Read-only; rules are set at the org level. Response includes `blockRepeatedPatternsEnabled`, `blockUserNumberEnabled`, `blockReversedUserNumberEnabled`, `blockPreviousPasscodes` (with `numberOfPasscodes`), `blockReversedOldPasscodeEnabled`, `blockRepeatedDigits` (with `max`), `blockContiguousSequences` (with `numberOfAscendingDigits`, `numberOfDescendingDigits`), and `length` (with `min`, `max`).
450
+
451
+ **CLI:** `wxcli call-settings-for-me-phase-5 show-rules`
452
+
453
+ ### Raw HTTP — Modify Caller ID
454
+
455
+ ```http
456
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/callerId
457
+ Authorization: Bearer {user_token}
458
+ Content-Type: application/json
459
+
460
+ {
461
+ "selected": "DIRECT_LINE",
462
+ "customNumber": null,
463
+ "firstName": "John",
464
+ "lastName": "Doe",
465
+ "externalCallerIdNamePolicy": "DIRECT_LINE"
466
+ }
467
+ ```
468
+
469
+ ### Raw HTTP — Read Barge-In Settings [BETA]
470
+
471
+ ```http
472
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn
473
+ Authorization: Bearer {user_token}
474
+ ```
475
+
476
+ ### Raw HTTP — Modify Barge-In Settings [BETA]
477
+
478
+ ```http
479
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/bargeIn
480
+ Authorization: Bearer {user_token}
481
+ Content-Type: application/json
482
+
483
+ {
484
+ "enabled": true,
485
+ "toneEnabled": true
486
+ }
487
+ ```
488
+
489
+ **Cross-references:**
490
+ - Voicemail: `person-call-settings-media.md` section 1
491
+ - Voicemail PIN/Rules: org-level rules at `/telephony/config/voicemail/rules`
492
+ - Caller ID: `person-call-settings-media.md` sections 2-3
493
+ - Call Recording: `person-call-settings-media.md` section 7
494
+ - Barge-In: `person-call-settings-media.md` section 5
495
+ - Anonymous Call Rejection: `person-call-settings-media.md` section 4
496
+
497
+ ---
498
+
499
+ ## 6. Endpoints & Devices
500
+
501
+ Manage the user's registered endpoints (desk phones, soft clients, etc.) and preferred answer endpoint configuration.
502
+
503
+ ### Endpoint Table
504
+
505
+ | Setting | GET | PUT | Path Suffix | Admin Equivalent |
506
+ |---------|-----|-----|-------------|-----------------|
507
+ | List Endpoints | Yes | — | `endpoints` | `/telephony/config/people/{personId}/devices` |
508
+ | Get Endpoint Details | Yes | Yes | `endpoints/{endpointId}` | — |
509
+ | Available Preferred Answer Endpoints | Yes | — | `settings/availablePreferredAnswerEndpoints` | `/telephony/config/people/{personId}/preferredAnswerEndpoint` (via availableEndpoints in response) |
510
+ | Preferred Answer Endpoint | Yes | Yes | `settings/preferredAnswerEndpoint` | `/telephony/config/people/{personId}/preferredAnswerEndpoint` |
511
+ | Hoteling Guest | Yes | Yes | `settings/hoteling/guest` | `/people/{personId}/features/hoteling` |
512
+ | Available Hoteling Hosts | Yes | — | `settings/hoteling/availableHosts` | — |
513
+
514
+ ### Raw HTTP — List My Endpoints
515
+
516
+ ```http
517
+ GET https://webexapis.com/v1/telephony/config/people/me/endpoints
518
+ Authorization: Bearer {user_token}
519
+ ```
520
+
521
+ ### Raw HTTP — Set Preferred Answer Endpoint
522
+
523
+ ```http
524
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/preferredAnswerEndpoint
525
+ Authorization: Bearer {user_token}
526
+ Content-Type: application/json
527
+
528
+ {
529
+ "preferredAnswerEndpointId": "{endpoint_id}"
530
+ }
531
+ ```
532
+
533
+ ### Raw HTTP — List Available Hoteling Hosts
534
+
535
+ ```http
536
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/availableHosts
537
+ Authorization: Bearer {user_token}
538
+ ```
539
+
540
+ Supports pagination (`max`, `start`) and filtering (`name`, `phoneNumber`). Returns a `hosts` array of objects with `hostId`, `firstName`, `lastName`, `phoneNumber`, `extension`, `allowedAssociationDuration`.
541
+
542
+ **CLI:** `wxcli call-settings-for-me-phase-5 list [--name "..."] [--phone-number "..."]`
543
+
544
+ ### Raw HTTP — Read Hoteling Guest Settings
545
+
546
+ ```http
547
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest
548
+ Authorization: Bearer {user_token}
549
+ ```
550
+
551
+ Returns `enabled`, `associationLimitEnabled`, `associationLimitHours`, and current host association details (`hostId`, `hostFirstName`, `hostLastName`, `hostEnforcedAssociationLimitEnabled`, `hostAssociationLimitHours`).
552
+
553
+ **CLI:** `wxcli call-settings-for-me-phase-5 show-guest`
554
+
555
+ ### Raw HTTP — Modify Hoteling Guest Settings
556
+
557
+ ```http
558
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/hoteling/guest
559
+ Authorization: Bearer {user_token}
560
+ Content-Type: application/json
561
+
562
+ {
563
+ "enabled": true,
564
+ "associationLimitEnabled": true,
565
+ "associationLimitHours": 12,
566
+ "hostId": "{host_person_or_workspace_id}"
567
+ }
568
+ ```
569
+
570
+ **CLI:** `wxcli call-settings-for-me-phase-5 update-guest --enabled --association-limit-enabled --association-limit-hours 12 --host-id "{id}"`
571
+
572
+ **Cross-reference:** `person-call-settings-behavior.md` section 10 (Preferred Answer Endpoint). `person-call-settings-behavior.md` section 7 (Hoteling) for admin-path hoteling host settings.
573
+
574
+ ---
575
+
576
+ ## 7. Routing & Groups
577
+
578
+ Read-only views of call park, call pickup, single number reach (SNR), and monitoring settings from the user's perspective.
579
+
580
+ ### Endpoint Table
581
+
582
+ | Setting | GET | PUT | POST/DELETE | Path Suffix | Admin Equivalent |
583
+ |---------|-----|-----|-------------|-------------|-----------------|
584
+ | Call Park | Yes | — | — | `settings/callPark` | — (admin uses location-level call park) |
585
+ | Call Pickup Group | Yes | — | — | `settings/callPickupGroup` | — (admin uses location-level pickup groups) |
586
+ | Single Number Reach | Yes | Yes | — | `settings/singleNumberReach` | `/telephony/config/people/{personId}/singleNumberReach` |
587
+ | SNR Numbers | — | PUT | POST/DELETE | `settings/singleNumberReach/numbers[/{phoneNumberId}]` | `/telephony/config/people/{personId}/singleNumberReach/numbers[/{id}]` |
588
+ | Monitoring | Yes | — | — | `settings/monitoring` | `/people/{personId}/features/monitoring` |
589
+
590
+ ### Raw HTTP — Read My Call Park Settings
591
+
592
+ ```http
593
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/callPark
594
+ Authorization: Bearer {user_token}
595
+ ```
596
+
597
+ ### Raw HTTP — Add Single Number Reach Number
598
+
599
+ ```http
600
+ POST https://webexapis.com/v1/telephony/config/people/me/settings/singleNumberReach/numbers
601
+ Authorization: Bearer {user_token}
602
+ Content-Type: application/json
603
+
604
+ {
605
+ "phoneNumber": "+14085551234",
606
+ "extension": "1234",
607
+ "answerTooLateAction": "SEND_TO_VOICEMAIL",
608
+ "answerTooSoonNumberOfRings": 0,
609
+ "answerTooLateNumberOfRings": 5
610
+ }
611
+ ```
612
+
613
+ **Cross-references:**
614
+ - Single Number Reach: `person-call-settings-handling.md` section 6
615
+ - Monitoring: `person-call-settings-media.md` section 9
616
+
617
+ ---
618
+
619
+ ## 8. Queue & Agent
620
+
621
+ Settings related to call queue agent behavior and calling services status.
622
+
623
+ ### Endpoint Table
624
+
625
+ | Setting | GET | PUT | Path Suffix | Admin Equivalent |
626
+ |---------|-----|-----|-------------|-----------------|
627
+ | Call Center (Queue Agent) | Yes | Yes | `settings/queues` | — |
628
+ | Calling Services | Yes | — | `settings/services` | — |
629
+ | Contact Center Extensions | Yes | — | `settings/contactCenterExtensions` | — |
630
+
631
+ ### Raw HTTP — Read My Call Center Settings
632
+
633
+ ```http
634
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/queues
635
+ Authorization: Bearer {user_token}
636
+ ```
637
+
638
+ ### Raw HTTP — Modify Call Center Settings (Join/Unjoin Queues)
639
+
640
+ ```http
641
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/queues
642
+ Authorization: Bearer {user_token}
643
+ Content-Type: application/json
644
+
645
+ {
646
+ "availableInCallQueue": true,
647
+ "callQueueEnabled": true
648
+ }
649
+ ```
650
+
651
+ ### Raw HTTP — Read My Calling Services
652
+
653
+ ```http
654
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/services
655
+ Authorization: Bearer {user_token}
656
+ ```
657
+
658
+ Returns list of calling services available to the user with their enabled/disabled state.
659
+
660
+ ### Raw HTTP — Read Contact Center Extensions
661
+
662
+ ```http
663
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/contactCenterExtensions
664
+ Authorization: Bearer {user_token}
665
+ ```
666
+
667
+ Returns contact center extension information for the authenticated user. No admin-path equivalent exists.
668
+
669
+ ---
670
+
671
+ ## 9. Location & System
672
+
673
+ Endpoints for retrieving location-level data, schedules, assigned numbers, feature access codes, announcement languages, and country configurations.
674
+
675
+ ### Endpoint Table
676
+
677
+ | Setting | Methods | Path Suffix | Admin Equivalent | Tag |
678
+ |---------|---------|-------------|-----------------|-----|
679
+ | My Details | GET | (root: `/me`) | `/telephony/config/people/{personId}` | — |
680
+ | Announcement Languages | GET | `announcementLanguages` | — | Beta |
681
+ | Country Config | GET | `countries/{countryCode}` | — | Beta |
682
+ | Assigned Numbers (Location) | GET | `location/assignedNumbers` | — | — |
683
+ | Location Schedule (Get) | GET | `locations/schedules/{scheduleType}/{scheduleId}` | `/people/{personId}/features/schedules` | — |
684
+ | User Schedules (List) | GET | `schedules` | `/people/{personId}/features/schedules` | — |
685
+ | User Schedule (CRUD) | GET/POST/PUT/DELETE | `schedules[/{scheduleType}/{scheduleId}]` | `/people/{personId}/features/schedules[/{scheduleType}/{scheduleId}]` | — |
686
+ | Schedule Events (CRUD) | GET/POST/PUT/DELETE | `schedules/{scheduleType}/{scheduleId}/events[/{eventId}]` | `/people/{personId}/features/schedules/{scheduleType}/{scheduleId}/events[/{eventId}]` | — |
687
+ | Feature Access Codes | GET | `settings/featureAccessCode` | — | — |
688
+ | Guest Calling Numbers | GET | `settings/guestCalling/numbers` | — | — |
689
+
690
+ ### Raw HTTP — Get My Details
691
+
692
+ ```http
693
+ GET https://webexapis.com/v1/telephony/config/people/me
694
+ Authorization: Bearer {user_token}
695
+ ```
696
+
697
+ ### Raw HTTP — Get Person Timezone and Announcement Language (Admin)
698
+
699
+ ```http
700
+ GET https://webexapis.com/v1/telephony/config/people/{personId}
701
+ Authorization: Bearer {admin_token}
702
+ ```
703
+
704
+ Returns `announcementLanguage` and `timeZone` for the specified person. Requires `spark-admin:people_read` scope. Accepts optional `orgId` query parameter.
705
+
706
+ **CLI:** `wxcli user-settings show-people {personId}`
707
+
708
+ ### Raw HTTP — Update Person Timezone and Announcement Language (Admin)
709
+
710
+ ```http
711
+ PUT https://webexapis.com/v1/telephony/config/people/{personId}
712
+ Authorization: Bearer {admin_token}
713
+ Content-Type: application/json
714
+
715
+ {
716
+ "announcementLanguage": "English",
717
+ "timeZone": "America/Los_Angeles"
718
+ }
719
+ ```
720
+
721
+ Requires `spark-admin:people_write` scope. Accepts optional `orgId` query parameter.
722
+
723
+ **CLI:** `wxcli user-settings update-people {personId} --announcement-language "English" --time-zone "America/Los_Angeles"`
724
+
725
+ ### Raw HTTP — List My Schedules
726
+
727
+ ```http
728
+ GET https://webexapis.com/v1/telephony/config/people/me/schedules
729
+ Authorization: Bearer {user_token}
730
+ ```
731
+
732
+ ### Raw HTTP — Create a User Schedule
733
+
734
+ ```http
735
+ POST https://webexapis.com/v1/telephony/config/people/me/schedules
736
+ Authorization: Bearer {user_token}
737
+ Content-Type: application/json
738
+
739
+ {
740
+ "name": "Business Hours",
741
+ "type": "businessHours"
742
+ }
743
+ ```
744
+
745
+ ### Raw HTTP — Get Feature Access Codes
746
+
747
+ ```http
748
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/featureAccessCode
749
+ Authorization: Bearer {user_token}
750
+ ```
751
+
752
+ ### Raw HTTP — Get Announcement Languages [BETA]
753
+
754
+ ```http
755
+ GET https://webexapis.com/v1/telephony/config/people/me/announcementLanguages
756
+ Authorization: Bearer {user_token}
757
+ ```
758
+
759
+ ---
760
+
761
+ ## 10. Secondary Line Settings
762
+
763
+ When a user has secondary lines (shared lines from other users), these endpoints let them manage settings for those secondary lines. The `{lineOwnerId}` parameter is the person ID of the line owner.
764
+
765
+ ### Endpoint Table
766
+
767
+ | Setting | GET | PUT | Path Suffix | Admin Equivalent |
768
+ |---------|-----|-----|-------------|-----------------|
769
+ | Available Caller IDs | Yes | — | `secondaryLines/{lineownerId}/availableCallerIds` | — |
770
+ | Call Forwarding | Yes | Yes | `secondaryLines/{lineownerId}/callForwarding` | — |
771
+ | Call Park | Yes | — | `secondaryLines/{lineownerId}/callPark` | — |
772
+ | Call Pickup Group | Yes | — | `secondaryLines/{lineownerId}/callPickupGroup` | — |
773
+ | Call Recording | Yes | — | `secondaryLines/{lineownerId}/callRecording` | — |
774
+ | Caller ID | Yes | Yes | `secondaryLines/{lineownerId}/callerId` | — |
775
+ | Feature Access Codes | Yes | — | `secondaryLines/{lineownerId}/featureAccessCode` | — |
776
+ | Call Center (Queues) | Yes | Yes | `secondaryLines/{lineownerId}/queues` | — |
777
+ | Selected Caller ID | Yes | Yes | `secondaryLines/{lineownerId}/selectedCallerId` | — |
778
+ | Calling Services | Yes | — | `secondaryLines/{lineownerId}/services` | — |
779
+ | Voicemail | Yes | Yes | `secondaryLines/{lineownerId}/voicemail` | — |
780
+ | Available Preferred Answer Endpoints | Yes | — | `secondaryLines/{lineOwnerId}/availablePreferredAnswerEndpoints` | — |
781
+ | Preferred Answer Endpoint | Yes | Yes | `secondaryLines/{lineOwnerId}/preferredAnswerEndpoint` | — |
782
+
783
+ All secondary line endpoints are unique to the `/me/` surface. There are no admin-path equivalents.
784
+
785
+ ### Raw HTTP — Read Secondary Line Call Forwarding
786
+
787
+ ```http
788
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/callForwarding
789
+ Authorization: Bearer {user_token}
790
+ ```
791
+
792
+ ### Raw HTTP — Modify Secondary Line Voicemail
793
+
794
+ ```http
795
+ PUT https://webexapis.com/v1/telephony/config/people/me/settings/secondaryLines/{lineOwnerId}/voicemail
796
+ Authorization: Bearer {user_token}
797
+ Content-Type: application/json
798
+
799
+ {
800
+ "enabled": true,
801
+ "sendBusyCalls": {
802
+ "enabled": true,
803
+ "greeting": "DEFAULT"
804
+ },
805
+ "sendUnansweredCalls": {
806
+ "enabled": true,
807
+ "greeting": "DEFAULT",
808
+ "numberOfRings": 6
809
+ }
810
+ }
811
+ ```
812
+
813
+ ---
814
+
815
+ ## 11. Mode Management
816
+
817
+ User-level mode management for operating modes (e.g., after-hours, holiday). These endpoints let the calling-licensed user view and switch operating modes for features they participate in. Tagged as "Mode Management" in the spec.
818
+
819
+ > **Note:** Admin-path equivalents exist at `/telephony/config/people/{personId}/modeManagement/` but only expose `availableFeatures` (GET) and `features` (GET/PUT). The `/me/` surface is significantly richer with 9 endpoints including mode switching actions.
820
+
821
+ ### Endpoint Table
822
+
823
+ | Setting | Method | Path Suffix | Admin Equivalent |
824
+ |---------|--------|-------------|-----------------|
825
+ | List Mode Management Features | GET | `settings/modeManagement/features` | `/telephony/config/people/{personId}/modeManagement/features` |
826
+ | Get Common Modes | GET | `settings/modeManagement/features/commonModes` | — |
827
+ | Get Mode Management Feature | GET | `settings/modeManagement/features/{featureId}` | — |
828
+ | Get Normal Operation Mode | GET | `settings/modeManagement/features/{featureId}/normalOperationMode` | — |
829
+ | Get Operating Mode | GET | `settings/modeManagement/features/{featureId}/modes/{modeId}` | — |
830
+ | Switch Mode (Multiple Features) | POST | `settings/modeManagement/features/actions/switchMode/invoke` | — |
831
+ | Switch Mode (Single Feature) | POST | `settings/modeManagement/features/{featureId}/actions/switchMode/invoke` | — |
832
+ | Extend Current Mode Duration | POST | `settings/modeManagement/features/{featureId}/actions/extendMode/invoke` | — |
833
+ | Switch to Normal Operation | POST | `settings/modeManagement/features/{featureId}/actions/switchToNormalOperation/invoke` | — |
834
+
835
+ ### Raw HTTP — List Mode Management Features
836
+
837
+ ```http
838
+ GET https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features
839
+ Authorization: Bearer {user_token}
840
+ ```
841
+
842
+ ### Raw HTTP — Switch Mode for a Feature
843
+
844
+ ```http
845
+ POST https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchMode/invoke
846
+ Authorization: Bearer {user_token}
847
+ Content-Type: application/json
848
+
849
+ {
850
+ "modeId": "{mode_id}"
851
+ }
852
+ ```
853
+
854
+ ### Raw HTTP — Switch to Normal Operation
855
+
856
+ ```http
857
+ POST https://webexapis.com/v1/telephony/config/people/me/settings/modeManagement/features/{featureId}/actions/switchToNormalOperation/invoke
858
+ Authorization: Bearer {user_token}
859
+ ```
860
+
861
+ **Cross-reference:** CLAUDE.md known issue #3 (mode-management requires calling-licensed user). See also `location-recording-advanced.md` for admin-level operating modes.
862
+
863
+ ---
864
+
865
+ ## 12. Admin Path Cross-Reference Table
866
+
867
+ Master mapping of every `/me/` endpoint to its admin equivalent. Path suffixes are relative to `/telephony/config/people/me/` (user) and the noted admin base path.
868
+
869
+ | Setting | User Path Suffix | Admin Path | Reference Doc |
870
+ |---------|-----------------|------------|---------------|
871
+ | **User-Only (no admin path)** | | | |
872
+ | Simultaneous Ring | `settings/simultaneousRing` | USER ONLY | person-call-settings-handling.md sec 4 |
873
+ | Simultaneous Ring Criteria | `settings/simultaneousRing/criteria[/{id}]` | USER ONLY | person-call-settings-handling.md sec 4 |
874
+ | Sequential Ring | `settings/sequentialRing` | USER ONLY | person-call-settings-handling.md sec 5 |
875
+ | Sequential Ring Criteria | `settings/sequentialRing/criteria[/{id}]` | USER ONLY | person-call-settings-handling.md sec 5 |
876
+ | Priority Alert | `settings/priorityAlert` | USER ONLY | person-call-settings-handling.md sec 10 |
877
+ | Priority Alert Criteria | `settings/priorityAlert/criteria[/{id}]` | USER ONLY | person-call-settings-handling.md sec 10 |
878
+ | Call Notify | `settings/callNotify` | USER ONLY | person-call-settings-handling.md |
879
+ | Call Notify Criteria | `settings/callNotify/criteria[/{id}]` | USER ONLY | person-call-settings-handling.md |
880
+ | Anonymous Call Reject | `settings/anonymousCallReject` | USER ONLY | person-call-settings-media.md sec 4 |
881
+ | Call Policies | `settings/callPolicies` [BETA] | USER ONLY | person-call-settings-permissions.md sec 5 |
882
+ | **Call Handling** | | | |
883
+ | Call Forwarding | `settings/callForwarding` | `/people/{personId}/features/callForwarding` | person-call-settings-handling.md sec 1 |
884
+ | Call Waiting | `settings/callWaiting` | `/people/{personId}/features/callWaiting` | person-call-settings-handling.md sec 2 |
885
+ | Do Not Disturb | `settings/doNotDisturb` [BETA] | `/people/{personId}/features/doNotDisturb` | person-call-settings-handling.md sec 3 |
886
+ | Selective Accept | `settings/selectiveAccept` | `/telephony/config/people/{personId}/selectiveAccept` | person-call-settings-handling.md sec 7 |
887
+ | Selective Accept Criteria | `settings/selectiveAccept/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveAccept/criteria[/{id}]` | person-call-settings-handling.md sec 7 |
888
+ | Selective Forward | `settings/selectiveForward` | `/telephony/config/people/{personId}/selectiveForward` | person-call-settings-handling.md sec 8 |
889
+ | Selective Forward Criteria | `settings/selectiveForward/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveForward/criteria[/{id}]` | person-call-settings-handling.md sec 8 |
890
+ | Selective Reject | `settings/selectiveReject` | `/telephony/config/people/{personId}/selectiveReject` | person-call-settings-handling.md sec 9 |
891
+ | Selective Reject Criteria | `settings/selectiveReject/criteria[/{id}]` | `/telephony/config/people/{personId}/selectiveReject/criteria[/{id}]` | person-call-settings-handling.md sec 9 |
892
+ | Call Block | `settings/callBlock` | — | — |
893
+ | Call Block Numbers | `settings/callBlock/numbers[/{phoneNumberId}]` | — | — |
894
+ | Personal Assistant | `settings/personalAssistant` | `/telephony/config/people/{personId}/features/personalAssistant` | person-call-settings-behavior.md sec 13 |
895
+ | **Executive & Assistant** | | | |
896
+ | Executive Alert | `settings/executive/alert` [BETA] | `/telephony/config/people/{personId}/executive/alert` | person-call-settings-permissions.md sec 4 |
897
+ | Assigned Assistants | `settings/executive/assignedAssistants` | `/telephony/config/people/{personId}/executive/assignedAssistants` | person-call-settings-permissions.md sec 4 |
898
+ | Executive Assistant | `settings/executive/assistant` | `/telephony/config/people/{personId}/executive/assistant` | person-call-settings-permissions.md sec 4 |
899
+ | Available Assistants | `settings/executive/availableAssistants` | `/telephony/config/people/{personId}/executive/availableAssistants` | person-call-settings-permissions.md sec 4 |
900
+ | Call Filtering | `settings/executive/callFiltering` [BETA] | `/telephony/config/people/{personId}/executive/callFiltering` | person-call-settings-permissions.md sec 4 |
901
+ | Call Filtering Criteria | `settings/executive/callFiltering/criteria[/{id}]` [BETA] | `/telephony/config/people/{personId}/executive/callFiltering/criteria[/{id}]` | person-call-settings-permissions.md sec 4 |
902
+ | Screening | `settings/executive/screening` [BETA] | `/telephony/config/people/{personId}/executive/screening` | person-call-settings-permissions.md sec 4 |
903
+ | **Voicemail & Media** | | | |
904
+ | Voicemail | `settings/voicemail` | `/people/{personId}/features/voicemail` | person-call-settings-media.md sec 1 |
905
+ | Voicemail Busy Greeting | `settings/voicemail/actions/busyGreetingUpload/invoke` | `/people/{personId}/features/voicemail/actions/uploadBusyGreeting/invoke` | person-call-settings-media.md sec 1 |
906
+ | Voicemail No Answer Greeting | `settings/voicemail/actions/noAnswerGreetingUpload/invoke` | `/people/{personId}/features/voicemail/actions/uploadNoAnswerGreeting/invoke` | person-call-settings-media.md sec 1 |
907
+ | Voicemail PIN | `voicemail/pin` | — | — |
908
+ | Voicemail Rules | `voicemail/rules` | `/telephony/config/voicemail/rules` (org-level) | — |
909
+ | Caller ID | `settings/callerId` | `/people/{personId}/features/callerId` | person-call-settings-media.md sec 2 |
910
+ | Selected Caller ID | `settings/selectedCallerId` | — | person-call-settings-media.md sec 3 |
911
+ | Available Caller IDs | `settings/availableCallerIds` | `/telephony/config/people/{personId}/agent/availableCallerIds` | person-call-settings-media.md sec 3 |
912
+ | Call Recording | `settings/callRecording` | `/people/{personId}/features/callRecording` | person-call-settings-media.md sec 7 |
913
+ | Barge-In | `settings/bargeIn` [BETA] | `/people/{personId}/features/bargeIn` | person-call-settings-media.md sec 5 |
914
+ | Call Captions | `settings/callCaptions` | `/telephony/config/people/{personId}/callCaptions` | — |
915
+ | WebexGo Override | `settings/webexGoOverride` | — | — |
916
+ | **Endpoints & Devices** | | | |
917
+ | List Endpoints | `endpoints` | `/telephony/config/people/{personId}/devices` | devices-core.md |
918
+ | Endpoint Details | `endpoints/{endpointId}` | — | — |
919
+ | Available Preferred Answer | `settings/availablePreferredAnswerEndpoints` | — | person-call-settings-behavior.md sec 10 |
920
+ | Preferred Answer Endpoint | `settings/preferredAnswerEndpoint` | `/telephony/config/people/{personId}/preferredAnswerEndpoint` | person-call-settings-behavior.md sec 10 |
921
+ | Hoteling Guest | `settings/hoteling/guest` | `/people/{personId}/features/hoteling` | person-call-settings-behavior.md sec 7 |
922
+ | Available Hoteling Hosts | `settings/hoteling/availableHosts` | — | — |
923
+ | **Routing & Groups** | | | |
924
+ | Call Park | `settings/callPark` | — (location-level) | call-features-additional.md |
925
+ | Call Pickup Group | `settings/callPickupGroup` | — (location-level) | call-features-additional.md |
926
+ | Single Number Reach | `settings/singleNumberReach` | `/telephony/config/people/{personId}/singleNumberReach` | person-call-settings-handling.md sec 6 |
927
+ | SNR Numbers | `settings/singleNumberReach/numbers[/{phoneNumberId}]` | `/telephony/config/people/{personId}/singleNumberReach/numbers[/{id}]` | person-call-settings-handling.md sec 6 |
928
+ | Monitoring | `settings/monitoring` | `/people/{personId}/features/monitoring` | person-call-settings-media.md sec 9 |
929
+ | **Queue & Agent** | | | |
930
+ | Call Center (Queues) | `settings/queues` | — | — |
931
+ | Calling Services | `settings/services` | — | — |
932
+ | Contact Center Extensions | `settings/contactCenterExtensions` | — | — |
933
+ | **Mode Management** | | | |
934
+ | Mode Management Features | `settings/modeManagement/features` | `/telephony/config/people/{personId}/modeManagement/features` | location-recording-advanced.md |
935
+ | Common Modes | `settings/modeManagement/features/commonModes` | — | — |
936
+ | Mode Management Feature | `settings/modeManagement/features/{featureId}` | — | — |
937
+ | Normal Operation Mode | `settings/modeManagement/features/{featureId}/normalOperationMode` | — | — |
938
+ | Operating Mode | `settings/modeManagement/features/{featureId}/modes/{modeId}` | — | — |
939
+ | Switch Mode (Multi) | `settings/modeManagement/features/actions/switchMode/invoke` | — | — |
940
+ | Switch Mode (Single) | `settings/modeManagement/features/{featureId}/actions/switchMode/invoke` | — | — |
941
+ | Extend Mode Duration | `settings/modeManagement/features/{featureId}/actions/extendMode/invoke` | — | — |
942
+ | Switch to Normal | `settings/modeManagement/features/{featureId}/actions/switchToNormalOperation/invoke` | — | — |
943
+ | **Location & System** | | | |
944
+ | My Details | (root: `/me`) | `/telephony/config/people/{personId}` | person-call-settings-behavior.md |
945
+ | Announcement Languages | `announcementLanguages` [BETA] | — | — |
946
+ | Country Config | `countries/{countryCode}` [BETA] | — | — |
947
+ | Assigned Numbers | `location/assignedNumbers` | — | — |
948
+ | Location Schedule | `locations/schedules/{scheduleType}/{scheduleId}` | — | — |
949
+ | User Schedules | `schedules` | `/people/{personId}/features/schedules` | — |
950
+ | User Schedule CRUD | `schedules/{scheduleType}/{scheduleId}` | `/people/{personId}/features/schedules/{scheduleType}/{scheduleId}` | — |
951
+ | Schedule Events CRUD | `schedules/.../events[/{eventId}]` | `/people/{personId}/features/schedules/.../events[/{eventId}]` | — |
952
+ | Feature Access Codes | `settings/featureAccessCode` | — | — |
953
+ | Guest Calling Numbers | `settings/guestCalling/numbers` | — | — |
954
+ | **Secondary Line Settings** | | | |
955
+ | Secondary Line Available Caller IDs | `settings/secondaryLines/{lineownerId}/availableCallerIds` | USER ONLY | — |
956
+ | Secondary Line Call Forwarding | `settings/secondaryLines/{lineownerId}/callForwarding` | USER ONLY | — |
957
+ | Secondary Line Call Park | `settings/secondaryLines/{lineownerId}/callPark` | USER ONLY | — |
958
+ | Secondary Line Call Pickup Group | `settings/secondaryLines/{lineownerId}/callPickupGroup` | USER ONLY | — |
959
+ | Secondary Line Call Recording | `settings/secondaryLines/{lineownerId}/callRecording` | USER ONLY | — |
960
+ | Secondary Line Caller ID | `settings/secondaryLines/{lineownerId}/callerId` | USER ONLY | — |
961
+ | Secondary Line Feature Access Codes | `settings/secondaryLines/{lineownerId}/featureAccessCode` | USER ONLY | — |
962
+ | Secondary Line Queues | `settings/secondaryLines/{lineownerId}/queues` | USER ONLY | — |
963
+ | Secondary Line Selected Caller ID | `settings/secondaryLines/{lineownerId}/selectedCallerId` | USER ONLY | — |
964
+ | Secondary Line Calling Services | `settings/secondaryLines/{lineownerId}/services` | USER ONLY | — |
965
+ | Secondary Line Voicemail | `settings/secondaryLines/{lineownerId}/voicemail` | USER ONLY | — |
966
+ | Secondary Line Available Preferred Answer | `settings/secondaryLines/{lineOwnerId}/availablePreferredAnswerEndpoints` | USER ONLY | — |
967
+ | Secondary Line Preferred Answer | `settings/secondaryLines/{lineOwnerId}/preferredAnswerEndpoint` | USER ONLY | — |
968
+
969
+ ---
970
+
971
+ ## Gotchas
972
+
973
+ 1. **Admin tokens do not work on /me/ paths.** All 156 self-service endpoints require user-level OAuth. Admin tokens (from service apps or admin-granted integrations) will get 404 or 401, not a helpful error.
974
+
975
+ 2. **User must have Webex Calling license.** Error 4008 ("User not found or not calling-licensed") is returned for all `/me/` endpoints if the authenticated user lacks a Calling license.
976
+
977
+ 3. **6 settings have NO admin path.** `simultaneousRing`, `sequentialRing`, `priorityAlert`, `callNotify`, `anonymousCallReject`, and `callPolicies` can only be managed via user OAuth through the `/me/` surface. There is no way for an admin to read or modify these settings on behalf of a user via API.
978
+
979
+ 4. **Beta endpoints may change.** Endpoints tagged with `Beta Call Settings For Me With Userhub Phase1` (callPolicies) and several executive/DND endpoints are marked beta. Their schemas may change without notice.
980
+
981
+ 5. **Secondary line settings are entirely user-only.** The 13 secondary line endpoints under `settings/secondaryLines/{lineOwnerId}/...` have no admin-path equivalent. Admins cannot manage a user's secondary line settings via API.
982
+
983
+ 6. **Path naming differs from admin paths.** Some `/me/` path suffixes differ from admin equivalents:
984
+ - `/me/endpoints` vs admin `/devices`
985
+ - `/me/settings/voicemail/actions/busyGreetingUpload/invoke` vs admin `.../actions/uploadBusyGreeting/invoke`
986
+ - `/me/settings/callBlock` has no admin equivalent at all
987
+
988
+ 7. **Read-only settings.** Several settings only expose GET (no PUT): `callRecording`, `callCaptions`, `callPark`, `callPickupGroup`, `monitoring`, `featureAccessCode`, `services`, `availableCallerIds`, `availablePreferredAnswerEndpoints`, `guestCalling/numbers`, `announcementLanguages`, `countries/{countryCode}`, `hoteling/availableHosts`, `voicemail/rules`. These are informational views of settings controlled by the admin.
989
+
990
+ 8. **Call Block is self-service only.** The call block feature (personal block list for phone numbers) exists only on the `/me/` surface with no admin equivalent. Users manage their own block list via GET/POST/DELETE on `settings/callBlock/numbers`.
991
+
992
+ 9. **Two schedule path families.** User schedules are at `schedules/{scheduleType}/{scheduleId}`, while location-level schedules (read-only to the user) are at `locations/schedules/{scheduleType}/{scheduleId}`.
993
+
994
+ 10. **Criteria CRUD pattern.** Eight settings use the criteria sub-resource pattern (simultaneousRing, sequentialRing, priorityAlert, callNotify, selectiveAccept, selectiveForward, selectiveReject, and executive callFiltering). GET on the parent resource returns a `criterias` array with summary objects. Full CRUD on individual criteria uses the `/criteria/{id}` sub-path.
995
+
996
+ 11. **Mode management is richer on /me/ than admin.** The admin path only has 2 endpoints (`availableFeatures` GET and `features` GET/PUT) while the `/me/` surface exposes 9 endpoints including mode switching, extending, and normal operation actions. Mode management requires a calling-licensed user (CLAUDE.md known issue #3).
997
+
998
+ 12. **Barge-In is tagged Beta.** The `/me/settings/bargeIn` endpoints are tagged `Beta Settings Features For Barge-In`. The admin equivalent at `/people/{personId}/features/bargeIn` is the stable path.
999
+
1000
+ 13. **Contact Center Extensions is user-only.** The `contactCenterExtensions` GET endpoint has no admin-path equivalent and no tag assignment in the spec.
1001
+
1002
+ 14. **Voicemail PIN and rules use a different path prefix.** Unlike most `/me/` endpoints that use `settings/voicemail`, the PIN and rules endpoints use `voicemail/pin` and `voicemail/rules` (no `settings/` prefix). This mirrors the org-level voicemail rules path at `/telephony/config/voicemail/rules`.
1003
+
1004
+ 15. **Voicemail rules are read-only at the user level.** The `voicemail/rules` endpoint only supports GET. Rules are set at the org level via `/telephony/config/voicemail/rules`. The user endpoint returns the rules that apply to them for informational purposes.
1005
+
1006
+ 16. **Person telephony config root is admin-only.** The `GET/PUT /telephony/config/people/{personId}` endpoint (timezone and announcement language) requires an admin token (`spark-admin:people_read`/`spark-admin:people_write`). The `/me/` equivalent returns the same fields via the root `GET /telephony/config/people/me` endpoint but only supports GET.
1007
+
1008
+ 17. **Hoteling guest vs hoteling host.** The `/me/settings/hoteling/guest` endpoint manages the guest side of hoteling (associating yourself with a host device). The admin-path equivalent at `/people/{personId}/features/hoteling` manages the host side (enabling a person's device to accept guests). These are complementary but asymmetric.
1009
+
1010
+ ---
1011
+
1012
+ ## See Also
1013
+
1014
+ - [person-call-settings-handling.md](person-call-settings-handling.md) — Call forwarding, waiting, DND, sim/sequential ring, selective accept/forward/reject, priority alert, SNR
1015
+ - [person-call-settings-media.md](person-call-settings-media.md) — Voicemail, caller ID, anonymous call reject, privacy, barge-in, call recording, monitoring
1016
+ - [person-call-settings-permissions.md](person-call-settings-permissions.md) — Incoming/outgoing permissions, feature access, executive/assistant, call policy
1017
+ - [person-call-settings-behavior.md](person-call-settings-behavior.md) — Calling behavior, app services, hoteling, receptionist, numbers, preferred answer, personal assistant
1018
+ - [authentication.md](authentication.md) — OAuth flows, user-level tokens, scopes
1019
+ - [call-features-additional.md](call-features-additional.md) — Call park, call pickup (location-level admin equivalents)
1020
+ - [devices-core.md](devices-core.md) — Device management (admin equivalent of endpoints)